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

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

PHP的PSR系列規(guī)範(fàn)

May 23, 2018 pm 02:58 PM
php psr 規(guī)範(fàn)

PSR

是PHP Standard Recommendation的簡(jiǎn)寫,它其實(shí)應(yīng)該叫PSRs,即係列推薦標(biāo)準(zhǔn):目前通過的規(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開發(fā)規(guī)範(fàn)的組織,它的成員由許多知名PHP社群專案組成,在其官網(wǎng)首頁(yè)下方可以看到成員清單。這些成員制定規(guī)範(fàn),並且落實(shí)在自己的專案中。

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

PSR-0(Autoloading Standard)

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

內(nèi)容:

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

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

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

每個(gè)命名空間在被從檔案系統(tǒng)載入時(shí)必須轉(zhuǎn)換為「作業(yè)系統(tǒng)路徑分隔符號(hào)」(DIRECTORY_SEPARATOR?)

每個(gè)「_ 」字元在「類別名稱」中轉(zhuǎn)換為DIRECTORY_SEPARATOR 。 「_」符號(hào)在命名空間中沒有明確意義

符合命名標(biāo)準(zhǔn)的命名空間和類別名稱必須以「.php」結(jié)尾來(lái)載入檔案

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

PSR-1(Basic Coding Standard)

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

內(nèi)容:

原始檔案必須只使用?

原始檔案中php程式碼的編碼格式必須只使用不帶BOM的UTF-8

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

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

類別名稱必須使用StudlyCaps寫法

類別中的常數(shù)必須只由大寫字母和底線(_)組成

方法名稱必須使用cameCase寫法

PS

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

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

程式碼必須遵守?PSR-1

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

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

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

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

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

所有的屬性和方法必須有可見性宣告;abstract和final聲明必須在可見性宣告之前;而static宣告必須在??可見性宣告之後

在結(jié)構(gòu)控制關(guān)鍵字的後面必須有一個(gè)空格;而方法和函式呼叫時(shí)後面不可有空格

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

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

PSR-3(Logger Interface)

PSR-3是應(yīng)用程式日誌類別的透過介面的定義(原文:官網(wǎng)、GitHub)。內(nèi)容很簡(jiǎn)單,就是一個(gè)接口,官方範(fàn)例程式碼引用一下就好了。當(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í)常數(shù)來(lái)呼叫這個(gè)方法必須和直接呼叫指定等級(jí)方法的結(jié)果一致。用一個(gè)本規(guī)範(fàn)中未定義且不為具 體實(shí)作所知的日誌等級(jí)來(lái)呼叫該方法必須拋出一個(gè)PsrLogInvalidArgumentException。不建議使用自訂的日誌等級(jí),除非你 非常確定目前類別庫(kù)對(duì)其有所支援。

PSR-4(Improved Autoloading)

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

內(nèi)容:

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

完全限定類名應(yīng)該類似如下範(fàn)例:()*

完全合規(guī)類別名稱必須有一個(gè)頂層命名空間(Vendor Name)

完全合規(guī)類別名稱可以有一個(gè)頂層命名空間

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

下劃線在完全合規(guī)類別名稱中是沒有特殊意義的

字母在完全合規(guī)類別名稱中可以是任何大小寫的組合

所有類別名稱必須以大小寫敏感的方式引用

當(dāng)從完全合規(guī)類別名稱載入檔案時(shí):

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

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

終止類別名稱對(duì)應(yīng)一個(gè)以 .php 結(jié)尾的檔案。檔案名稱必須和終止類別名稱大小寫匹配

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

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)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脫衣器

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整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

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

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

什麼是PHP,為什麼它用於Web開發(fā)? 什麼是PHP,為什麼它用於Web開發(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)致問題。

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

寫乾淨(jìng)、易維護(hù)的PHP代碼關(guān)鍵在於清晰命名、遵循標(biāo)準(zhǔn)、合理結(jié)構(gòu)、善用註釋和可測(cè)試性。 1.使用明確的變量、函數(shù)和類名,如$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)鍵處添加註釋並撰寫接口文檔,明確參數(shù)、返回值和異常;6.提高可測(cè)試性,採(cǎi)用依賴注入、減少全局狀態(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