「PSR 規(guī)范」PSR-4 自動加載規(guī)范

1.概述


本文 PSR 是關(guān)于由文件路徑 自動載入 對應(yīng)類的相關(guān)規(guī)范,本規(guī)范是可互操作的,可以作為任意自動載入規(guī)范的補充,其中包括 PSR-0 ,本 PSR 還包括自動載入的類對應(yīng)的文件存放路徑規(guī)范。

關(guān)于「能愿動詞」的使用


為了避免歧義,文檔使用了大量的 「能愿動詞」,對應(yīng)的解釋如下:

  • 必須(MUST):絕對,嚴(yán)格遵循,請照做,無條件遵守;
  • 一定不可(MUST NOT):禁令,嚴(yán)令禁止;
  • 應(yīng)該(SHOULD):強烈建議這樣做,但不強求;
  • 不該(SHOULD NOT):強烈建議不要這樣做,但不強求;
  • 可以(MAY)可選(OPTIONAL):選擇性較高,在這個文檔內(nèi),此詞語使用較少;

2.詳細說明


  1. 此處的 「類」泛指所有的「class 類」、「接口」、「trait 可復(fù)用代碼塊」以及其他類似結(jié)構(gòu)。
  2. 一個完整的類名需具有以下結(jié)構(gòu):

\ <命名空間>(\ <子命名空間>)*\ <類名>

  • i. 完整的類名 必須 要有一個頂級的命名空間,被稱之為 "vendor namespace";
  • ii. 完整的類名 可以 有一個或多個子命名空間;
  • iii. 完整的類名 必須 有一個最終的類名;
  • iv. 完整的類名中任意部分的下劃線都是沒有特殊含義的;
  • v.完整的類名 可以 由任意的大小寫字母組成;
  • vi.所有類名都 必須 是大小寫敏感的。

3.當(dāng)根據(jù)完整的類名載入相應(yīng)的文件

  • i.完整的類名中,去掉最前面的命名空間分割符,前面連續(xù)的一個或多個命名空間和子命名空間,作為 「命名空間前綴」,其 必須 與至少一個 「文件基目錄」相對應(yīng)。
  • ii.緊接命名空間前綴后的子命名空間 必須 與相應(yīng)的 「文件基目錄」相匹配,其中的命名空間分割符將作為目錄分割符。
  • iii. 末尾的類名 必須 與對應(yīng)的以 .php 為后綴的文件同名。
  • iv. 自動加載器(autoloader)的實現(xiàn) 一定不可 拋出異常、一定不可 觸發(fā)任意級別的錯誤信息以及 不應(yīng)該 有返回值。

3.例子


下表展示了符合規(guī)范完整類名、命名空間前綴和文件基目錄所對應(yīng)的文件路徑。

完整類名 命名空間前綴 文件基目錄 文件路徑
\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
\Zend\Acl Zend /usr/includes/Zend/ /usr/imcludes/Zend/Acl.php

關(guān)于本規(guī)范的實現(xiàn),可參閱 相關(guān)實例

注意:實例并 屬于規(guī)范的一部分,而且隨時 有所變動。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 概述 本 PSR 是關(guān)于由文件路徑 自動載入 對應(yīng)類的相關(guān)規(guī)范,本規(guī)范是可互操作的,可以作為任一自動載入規(guī)范...
    f09037cb27f7閱讀 3,333評論 0 2
  • 1. 概述 本 PSR 是關(guān)于由文件路徑 自動載入 對應(yīng)類的相關(guān)規(guī)范,本規(guī)范是可互操作的,可以作為任一自動載入規(guī)范...
    零一間閱讀 4,605評論 0 0
  • 自動加載 必須 (MUST) : 絕對,嚴(yán)格遵循,無條件遵守; 一定不可 (MUST NOT) : 嚴(yán)令禁止; 應(yīng)...
    DragonsLong閱讀 343評論 0 2
  • 1.命名空間 PHP 命名空間可以解決以下兩類問題:1) 用戶編寫的代碼與PHP內(nèi)部的類/函數(shù)/常量或第三方類/函...
    wwwxi閱讀 721評論 0 1
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,831評論 28 54

友情鏈接更多精彩內(nèi)容