国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) php教程 php手冊(cè) PHP的PSR系列規(guī)范

PHP的PSR系列規(guī)范

May 23, 2018 pm 02:58 PM
php psr 規(guī)范

PSR

是PHP Standard Recommendation的簡(jiǎn)寫(xiě),它其實(shí)應(yīng)該叫PSRs,即系列推薦標(biāo)準(zhǔn):目前通過(guò)的規(guī)范有PSR-0(Autoloading Standard)、PSR-1(Basic Coding Standard)、PSR-2(Coding Style Guide)、PSR-3(Logger Interface)、PSR-4(Improved Autoloading)。它不是PHP官方標(biāo)準(zhǔn),而是從如Zend、Symfony2等知名PHP項(xiàng)目中提煉出來(lái)的一系列標(biāo)準(zhǔn),目前有越來(lái)有多的社區(qū)項(xiàng)目加入成員并遵循該標(biāo)準(zhǔn)。

PHP-FIG?— PHP Framework Interoperability Group, 是制定PSRs開(kāi)發(fā)規(guī)范的組織,它的成員由很多知名PHP社區(qū)項(xiàng)目組成,在其官網(wǎng)首頁(yè)下方可以看到成員清單。這些成員制定規(guī)范,并且落實(shí)在自己的項(xiàng)目中。

其實(shí)各個(gè)PSR規(guī)范的內(nèi)容都很簡(jiǎn)潔明了,比起那些動(dòng)則幾十頁(yè)的規(guī)范,真是好太多了。

PSR-0(Autoloading Standard)

PSR-0即類(lèi)自動(dòng)加載規(guī)范(原文:官網(wǎng)、GitHub)。從2014-10-21日起,該規(guī)范被標(biāo)記為Deprecated,由PSR-4替代。它的內(nèi)容十分簡(jiǎn)潔。

內(nèi)容:

一個(gè)完全合格的命名空間和類(lèi)名必須有以下的結(jié)構(gòu)“\\(\)*

每個(gè)命名空間必須有頂級(jí)的命名空間(“Vendor Name”)

每個(gè)命名空間可以有任意多個(gè)子命名空間

每個(gè)命名空間在被從文件系統(tǒng)加載時(shí)必須被轉(zhuǎn)換為“操作系統(tǒng)路徑分隔符”(DIRECTORY_SEPARATOR?)

每個(gè)“_”字符在“類(lèi)名”中被轉(zhuǎn)換為DIRECTORY_SEPARATOR ?!癬”符號(hào)在命名空間中沒(méi)有明確含義

符合命名標(biāo)準(zhǔn)的命名空間和類(lèi)名必須以“.php”結(jié)尾來(lái)加載文件

Vendor Name,命名空間,類(lèi)名可以由大小寫(xiě)字母組成,其中命名空間和類(lèi)名是大小寫(xiě)敏感的以保證多系統(tǒng)兼容性

PSR-1(Basic Coding Standard)

PSR-1即基礎(chǔ)編碼標(biāo)準(zhǔn)(原文:官網(wǎng)、GitHub)。內(nèi)榮也十分簡(jiǎn)潔,包含了類(lèi)文件、類(lèi)名、類(lèi)方法名的命名方法。

內(nèi)容:

源文件必須只使用?

源文件中php代碼的編碼格式必須只使用不帶BOM的UTF-8

一個(gè)源文件建議只用來(lái)做聲明(類(lèi),函數(shù),常量等)或者只用來(lái)做一些引起副作用的操作(例如:輸出信息,修改.ini配置文件等),但不應(yīng)該同時(shí)做這兩件事

命名空間和類(lèi)必須遵守PSR-0標(biāo)準(zhǔn)

類(lèi)名必須使用StudlyCaps寫(xiě)法

類(lèi)中的常量必須只由大寫(xiě)字母和下劃線(_)組成

方法名必須使用cameCase寫(xiě)法

PSR-2(Coding Style Guide)

PSR-2即編碼風(fēng)格標(biāo)準(zhǔn)(原文:官網(wǎng)、GitHub)。內(nèi)容就稍多,但還是比較簡(jiǎn)潔,它以PSR-1為基礎(chǔ),包含了縮進(jìn)、每行代碼長(zhǎng)度、換行、方法可見(jiàn)性聲明、空格和方法體大括號(hào)換行的相關(guān)規(guī)定。

標(biāo)準(zhǔn)內(nèi)容:

代碼必須遵守 PSR-1

代碼必須使用4個(gè)空格來(lái)進(jìn)行縮進(jìn),而不是用制表符

一行代碼的長(zhǎng)度不應(yīng)有硬限制;軟限制必須為120個(gè)字符,建議每行代碼80個(gè)字符或者更少

在命名空間的聲明下面必須有一行空行,并且在use的聲明下面也必須有一行空行

類(lèi)的左花括號(hào)必須放到其聲明下面自成一行,右花括號(hào)則必須放到類(lèi)主體下面自成一行

方法的左花括號(hào)必須放到其聲明下面自成一行,右花括號(hào)則必須放到方法主體的下一行

所有的屬性和方法必須有可見(jiàn)性聲明;abstract和final聲明必須在可見(jiàn)性聲明之前;而static聲明必須在可見(jiàn)性聲明之后

在結(jié)構(gòu)控制關(guān)鍵字的后面必須有一個(gè)空格;而方法和函數(shù)調(diào)用時(shí)后面不可有空格

結(jié)構(gòu)控制的左花括號(hào)必須跟其放在同一行,右花括號(hào)必須放在該結(jié)構(gòu)控制代碼主體的下一行

控制結(jié)構(gòu)的左括號(hào)之后不可有空格,右括號(hào)之前也不可有空格

PSR-3(Logger Interface)

PSR-3是對(duì)應(yīng)用日志類(lèi)的通過(guò)接口的定義(原文:官網(wǎng)、GitHub)。內(nèi)容很簡(jiǎn)單,就是一個(gè)接口,官方示例代碼引用一下就好了。當(dāng)然,在具體的應(yīng)用中,只要遵循該接口,肯定可以定制相應(yīng)的實(shí)現(xiàn)。

基礎(chǔ)內(nèi)容:

LoggerInterface暴露八個(gè)接口用來(lái)記錄八個(gè)等級(jí)(debug, info, notice, warning, error, critical, alert, emergency)的日志。

第 九個(gè)方法是log,接受日志等級(jí)作為第一個(gè)參數(shù)。用一個(gè)日志等級(jí)常量來(lái)調(diào)用這個(gè)方法必須和直接調(diào)用指定等級(jí)方法的結(jié)果一致。用一個(gè)本規(guī)范中未定義且不為具 體實(shí)現(xiàn)所知的日志等級(jí)來(lái)調(diào)用該方法必須拋出一個(gè)Psr\Log\InvalidArgumentException。不推薦使用自定義的日志等級(jí),除非你 非常確定當(dāng)前類(lèi)庫(kù)對(duì)其有所支持。

PSR-4(Improved Autoloading)

PSR-4即改進(jìn)版的自動(dòng)加載規(guī)范(原文:官網(wǎng)、GitHub)。它是PSR-0規(guī)范的接替者。它可以與任何其它的自動(dòng)加載規(guī)范兼容,包括PSR-0。

內(nèi)容:

術(shù)語(yǔ)「類(lèi)」是一個(gè)泛稱;它包含類(lèi),接口,traits 以及其他類(lèi)似的結(jié)構(gòu);

完全限定類(lèi)名應(yīng)該類(lèi)似如下范例:()*

完全合規(guī)類(lèi)名必須有一個(gè)頂級(jí)命名空間(Vendor Name)

完全合規(guī)類(lèi)名可以有多個(gè)子命名空間

完全合規(guī)類(lèi)名應(yīng)該有一個(gè)終止類(lèi)名

下劃線在完全合規(guī)類(lèi)名中是沒(méi)有特殊含義的

字母在完全合規(guī)類(lèi)名中可以是任何大小寫(xiě)的組合

所有類(lèi)名必須以大小寫(xiě)敏感的方式引用

當(dāng)從完全合規(guī)類(lèi)名載入文件時(shí):

在完全合規(guī)類(lèi)名中,連續(xù)的一個(gè)或幾個(gè)子命名空間構(gòu)成的命名空間前綴(不包括頂級(jí)命名空間的分隔符),至少對(duì)應(yīng)著至少一個(gè)基礎(chǔ)目錄

在「命名空間前綴」后的連續(xù)子命名空間名稱對(duì)應(yīng)一個(gè)「基礎(chǔ)目錄」下的子目錄,其中的命名 空間分隔符表示目錄分隔符。子目錄名稱必須和子命名空間名大小寫(xiě)匹配

終止類(lèi)名對(duì)應(yīng)一個(gè)以 .php 結(jié)尾的文件。文件名必須和終止類(lèi)名大小寫(xiě)匹配

自動(dòng)載入器的實(shí)現(xiàn)不可拋出任何異常,不可引發(fā)任何等級(jí)的錯(cuò)誤;也不應(yīng)返回值

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話題

我如何了解最新的PHP開(kāi)發(fā)和最佳實(shí)踐? 我如何了解最新的PHP開(kāi)發(fā)和最佳實(shí)踐? Jun 23, 2025 am 12:56 AM

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

什么是PHP,為什么它用于Web開(kāi)發(fā)? 什么是PHP,為什么它用于Web開(kāi)發(fā)? Jun 23, 2025 am 12:55 AM

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

如何設(shè)置PHP時(shí)區(qū)? 如何設(shè)置PHP時(shí)區(qū)? Jun 25, 2025 am 01:00 AM

tosetTherightTimeZoneInphp,restate_default_timezone_set()functionAtthestArtofyourscriptWithavalIdidentIdentifiersuchas'america/new_york'.1.usedate_default_default_timezone_set_set()

我如何驗(yàn)證PHP中的用戶輸入以確保其符合某些標(biāo)準(zhǔn)? 我如何驗(yàn)證PHP中的用戶輸入以確保其符合某些標(biāo)準(zhǔn)? Jun 22, 2025 am 01:00 AM

TovalidateuserinputinPHP,usebuilt-invalidationfunctionslikefilter_var()andfilter_input(),applyregularexpressionsforcustomformatssuchasusernamesorphonenumbers,checkdatatypesfornumericvalueslikeageorprice,setlengthlimitsandtrimwhitespacetopreventlayout

什么是php(serialize(),Unserialize())中的數(shù)據(jù)序列化? 什么是php(serialize(),Unserialize())中的數(shù)據(jù)序列化? Jun 22, 2025 am 01:03 AM

thephpfunctionserize()andunSerialize()redustoconvertComplexdatStructDestoresToroStoroStoroSandaBackagagain.1.Serialize()

如何將PHP代碼嵌入HTML文件中? 如何將PHP代碼嵌入HTML文件中? Jun 22, 2025 am 01:00 AM

可以將PHP代碼嵌入HTML文件中,但需確保文件以.php為擴(kuò)展名,以便服務(wù)器能正確解析。使用標(biāo)準(zhǔn)的標(biāo)簽包裹PHP代碼,可在HTML中任意位置插入動(dòng)態(tài)內(nèi)容。此外,可在同一文件中多次切換PHP與HTML,實(shí)現(xiàn)條件渲染等動(dòng)態(tài)功能。務(wù)必注意服務(wù)器配置及語(yǔ)法正確性,避免因短標(biāo)簽、引號(hào)錯(cuò)誤或遺漏結(jié)束標(biāo)簽導(dǎo)致問(wèn)題。

編寫(xiě)清潔和可維護(hù)的PHP代碼的最佳實(shí)踐是什么? 編寫(xiě)清潔和可維護(hù)的PHP代碼的最佳實(shí)踐是什么? Jun 24, 2025 am 12:53 AM

寫(xiě)干凈、易維護(hù)的PHP代碼關(guān)鍵在于清晰命名、遵循標(biāo)準(zhǔn)、合理結(jié)構(gòu)、善用注釋和可測(cè)試性。1.使用明確的變量、函數(shù)和類(lèi)名,如$userData和calculateTotalPrice();2.遵循PSR-12標(biāo)準(zhǔn)統(tǒng)一代碼風(fēng)格;3.按職責(zé)拆分代碼結(jié)構(gòu),使用MVC或Laravel式目錄組織;4.避免面條式代碼,將邏輯拆分為單一職責(zé)的小函數(shù);5.在關(guān)鍵處添加注釋并撰寫(xiě)接口文檔,明確參數(shù)、返回值和異常;6.提高可測(cè)試性,采用依賴注入、減少全局狀態(tài)和靜態(tài)方法。這些做法提升代碼質(zhì)量、協(xié)作效率和后期維護(hù)便利性。

如何使用PHP執(zhí)行SQL查詢? 如何使用PHP執(zhí)行SQL查詢? Jun 24, 2025 am 12:54 AM

Yes,youcanrunSQLqueriesusingPHP,andtheprocessinvolveschoosingadatabaseextension,connectingtothedatabase,executingqueriessafely,andclosingconnectionswhendone.Todothis,firstchoosebetweenMySQLiorPDO,withPDObeingmoreflexibleduetosupportingmultipledatabas

See all articles