摘要:自動(dòng)加載規(guī)范此規(guī)范已被棄用本規(guī)范已于年月日被標(biāo)記為棄用,目前最新的替代規(guī)范為。本文是為自動(dòng)加載器實(shí)現(xiàn)通用自動(dòng)加載,所需要遵循的編碼規(guī)范。這也是目前建議的類文件載入方式。
自動(dòng)加載規(guī)范
此規(guī)范已被棄用 - 本規(guī)范已于2014年10月21日被標(biāo)記為棄用,目前最新的替代規(guī)范為 [PSR-4] 。
本文是為自動(dòng)加載器(autoloader)實(shí)現(xiàn)通用自動(dòng)加載,所需要遵循的編碼規(guī)范。
規(guī)范說明一個(gè)標(biāo)準(zhǔn)的 命名空間(namespace) 與 類(class) 名稱的定義必須符合以下結(jié)構(gòu):
其中Vendor Name為每個(gè)命名空間都必須要有的一個(gè)頂級(jí)命名空間名;
需要的話,每個(gè)命名空間下可以擁有多個(gè)子命名空間;
當(dāng)根據(jù)完整的命名空間名從文件系統(tǒng)中載入類文件時(shí),每個(gè)命名空間之間的分隔符都會(huì)被轉(zhuǎn)換成文件夾路徑分隔符;
類名稱中的每個(gè) _ 字符也會(huì)被轉(zhuǎn)換成文件夾路徑分隔符,而命名空間中的 _ 字符則是無特殊含義的。
當(dāng)從文件系統(tǒng)中載入標(biāo)準(zhǔn)的命名空間或類時(shí),都將添加 .php 為目標(biāo)文件后綴;
組織名稱(Vendor Name)、命名空間(Namespace) 以及 類的名稱(Class Name) 可由任意大小寫字母組成。
范例DoctrineCommonIsolatedClassLoader => /path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php
SymfonyCoreRequest => /path/to/project/lib/vendor/Symfony/Core/Request.php
endAcl => /path/to/project/lib/vendor/Zend/Acl.php
endMailMessage => /path/to/project/lib/vendor/Zend/Mail/Message.php
命名空間以及類名稱中的下劃線amespacepackageClass_Name => /path/to/project/lib/vendor/namespace/package/Class/Name.php
amespacepackage_nameClass_Name => /path/to/project/lib/vendor/namespace/package_name/Class/Name.php
以上是使用通用自動(dòng)加載必須遵循的最低規(guī)范標(biāo)準(zhǔn), 可通過以下的示例函數(shù) SplClassLoader 載入 PHP 5.3 的類文件,來驗(yàn)證你所寫的命名空間以及類是否符合以上規(guī)范。
實(shí)例以下示例函數(shù)為本規(guī)范的一個(gè)簡(jiǎn)單實(shí)現(xiàn)。
SplClassLoader 實(shí)例以下的 gist 是 一個(gè) SplClassLoader 類文件的實(shí)例,如果你遵循了以上規(guī)范,可以把它用來載入你的類文件。 這也是目前 PHP 5.3 建議的類文件載入方式。
Gist地址
轉(zhuǎn)自Github(PizzaLiu)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21163.html
摘要:前言在開始之前,歡迎關(guān)注我自己的博客這篇文章是對(duì)自動(dòng)加載功能的一個(gè)總結(jié),內(nèi)容涉及的自動(dòng)加載功能的命名空間的與標(biāo)準(zhǔn)等內(nèi)容。要實(shí)現(xiàn)第一步,第二步的功能,必須在開發(fā)時(shí)約定類名與磁盤文件的映射方法,只有這樣我們才能根據(jù)類名找到它對(duì)應(yīng)的磁盤文件。 前言 在開始之前,歡迎關(guān)注我自己的博客:www.leoyang90.cn 這篇文章是對(duì)PHP自動(dòng)加載功能的一個(gè)總結(jié),內(nèi)容涉及PHP的自動(dòng)加載功能、P...
摘要:制定的規(guī)范,簡(jiǎn)稱,是開發(fā)的事實(shí)標(biāo)準(zhǔn)。原本有四個(gè)規(guī)范,分別是自動(dòng)加載基本代碼規(guī)范代碼樣式日志接口年底,新出了第個(gè)規(guī)范。區(qū)別在于的規(guī)范比較干凈,去除了兼容以前版本的內(nèi)容,有一點(diǎn)升級(jí)版的感覺。 FIG制定的PHP規(guī)范,簡(jiǎn)稱PSR,是PHP開發(fā)的事實(shí)標(biāo)準(zhǔn)。 PSR原本有四個(gè)規(guī)范,分別是: PSR-0 自動(dòng)加載 PSR-1 基本代碼規(guī)范 PSR-2 代碼樣式 PSR-3 日志接口 20...
摘要:前言試問現(xiàn)在的碼農(nóng)對(duì)規(guī)范了解多少。寫了幾年代碼的我,居然因不了解規(guī)范被鄙視特此來交下學(xué)費(fèi)網(wǎng)上資料有很多,本文只做鏈接指引什么是是的簡(jiǎn)稱,這個(gè)是組織制定的一套規(guī)范。 前言 試問現(xiàn)在php的碼農(nóng)對(duì)psr規(guī)范了解多少。 寫了幾年代碼的我,居然因不了解規(guī)范被鄙視!特此來交下學(xué)費(fèi) 網(wǎng)上資料有很多,本文只做鏈接指引 什么是PSR PSR是PHP Standards Recommendatio...
摘要:概述這份聲明了關(guān)于從文件路徑自動(dòng)加載類的規(guī)范。當(dāng)根據(jù)完全限定類名加載對(duì)應(yīng)的文件時(shí)由最開始的命名空間開始,連續(xù)的一個(gè)或多個(gè)命名空間組成的序列,不包括最前面的命名空間分隔符,在這個(gè)完全限定類名中這個(gè)序列稱為命名空間前綴,對(duì)應(yīng)了至少一個(gè)基礎(chǔ)目錄。 PSR-4:自動(dòng)加載 翻譯:薛粲授權(quán)許可:CC BY-NC 4.0 這份文檔是《PSR-4: Autoloader》的非官方譯文。 英文原文使用的...
摘要:是一系列關(guān)于開發(fā)的規(guī)范,分有好幾個(gè)版本,自己學(xué)的也較為膚淺,但還是希望能時(shí)常查看規(guī)范,為了方便記憶和遵循,我把關(guān)鍵詞為必須的撿拾出來,做個(gè)簡(jiǎn)單地必要規(guī)范的記錄。所有文件必須使用作為行的結(jié)束符。 PSR是一系列關(guān)于PHP開發(fā)的規(guī)范,分有好幾個(gè)版本,自己學(xué)的也較為膚淺,但還是希望能時(shí)常查看規(guī)范,為了方便記憶和遵循,我把關(guān)鍵詞為必須的撿拾出來,做個(gè)簡(jiǎn)單地必要規(guī)范的記錄。(就是個(gè)搬磚的。。。)...
閱讀 2680·2021-11-25 09:43
閱讀 705·2021-11-12 10:36
閱讀 4879·2021-11-08 13:18
閱讀 2214·2021-09-06 15:00
閱讀 3161·2019-08-30 15:56
閱讀 978·2019-08-30 13:57
閱讀 2018·2019-08-30 13:48
閱讀 1442·2019-08-30 11:13