PHP 自動載入規範PSR 4

2022-02-01 02:21:07 字數 1364 閱讀 9608

autoloaderautoloader

1. 概述

本 psr 是關於由檔案路徑 [自動載入][ 對應類的相關規範, 本規範是可互操作的,可以作為任一自動載入規範的補充,其中包括 psr-0,此外, 本 psr 還包括自動載入的類對應的檔案存放路徑規範。

2. 詳細說明

此處的「類」泛指所有的class類、介面、traits可復用**塊以及其它類似結構。

乙個完整的類名需具有以下結構:

\《命名空間》(\《子命名空間》)*\《類名》

完整的類名必須要有乙個頂級命名空間,被稱為 「vendor namespace」;

完整的類名可以有乙個或多個子命名空間;

完整的類名必須有乙個最終的類名;

完整的類名中任意一部分中的下滑線都是沒有特殊含義的;

完整的類名可以由任意大小寫字母組成;

所有類名都必須是大小寫敏感的。

當根據完整的類名載入相應的檔案……

完整的類名中,去掉最前面的命名空間分隔符,前面連續的乙個或多個命名空間和子命名空間,作為「命名空間字首」,其必須與至少乙個「檔案基目錄」相對應;

緊接命名空間字首後的子命名空間必須與相應的」檔案基目錄「相匹配,其中的命名空間分隔符將作為目錄分隔符。

末尾的類名必須與對應的以 .php 為字尾的檔案同名。

自動載入器(autoloader)的實現一定不能丟擲異常、一定不能觸發任一級別的錯誤資訊以及不應該有返回值。

3. 例子

下表展示了符合規範完整類名、命名空間字首和檔案基目錄所對應的檔案路徑。

完整類名

命名空間字首

檔案基目錄

檔案路徑

\acme\log\writer\file_writer

acme\log\writer

./acme-log-writer/lib/

./acme-log-writer/lib/file_writer.php

\aura\web\response\status

aura\web

/path/to/aura-web/src/

/path/to/aura-web/src/response/status.php

\symfony\core\request

symfony\core

./vendor/symfony/core/

./vendor/symfony/core/request.php

\zend\acl

zend

/usr/includes/zend/

/usr/includes/zend/acl.php

關於本規範的實現,可參閱 github

注意:例項並不屬於規範的一部分,且隨時會有所變動。

PSR 4 自動載入

翻譯自 這個 psr 描述的是通過檔案路徑自動載入類的指南,它作為對 psr 0 的補充 根據這個來規範存放檔案以實現自動載入 術語class包含類class,介面inte ce,特性traits以及其他一些類似的結構 乙個完整的限定類名應該按照如下範例 當通過乙個完整的限定類名引入乙個檔案時 自動...

PSR 4 自動載入

autoloader 本 psr 是關於由檔案路徑 自動載入 對應類的相關規範,本規範是可互操作的,可以作為任一自動載入規範的補充,其中包括 psr 0,此外,本 psr 還包括自動載入的類對應的檔案存放路徑規範。2.詳細說明 此處的 類 泛指所有的class類 介面 traits可復用 塊以及其它...

PSR4自動載入

psr描述了類名和檔案路徑自動載入。1 class 指的是 class inte ce trait 以及其他類似結構體 2 乙個合格的類名應該是下面格式 必須有乙個頂級命名空間 可以包括一級或多級子命名空間的名字 必須包括乙個最終的類名 下劃線在這裡沒有任何特殊含義 類名大小寫敏感 3 例子 完整合...