摘要:參考自動(dòng)加載已廢棄基本代碼規(guī)范代碼樣式日志接口如何指定文件路徑從而自動(dòng)加載類定義基本代碼規(guī)范本篇規(guī)范制定了代碼基本元素的相關(guān)標(biāo)準(zhǔn),以確保共享的代碼間具有較高程度的技術(shù)互通性。
概述
PSR 不是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)。
參考:http://psr.phphub.org/
PSR-0 自動(dòng)加載 X已廢棄PSR-1基本代碼規(guī)范
PSR-1 基本代碼規(guī)范
PSR-2 代碼樣式
PSR-3 日志接口
PSR-4 如何指定文件路徑從而自動(dòng)加載類定義
本篇規(guī)范制定了代碼基本元素的相關(guān)標(biāo)準(zhǔn),以確保共享的PHP代碼間具有較高程度的技術(shù)互通性。
文件
PHP代碼文件 必須 以
PHP代碼文件 必須 以 不帶 BOM 的 UTF-8 編碼;
PHP代碼中 應(yīng)該 只定義類、函數(shù)、常量等聲明,或其他會(huì)產(chǎn)生 副作用 的操作
(如:生成文件輸出以及修改 .ini配置文件等),二者只能選其一;
命名空間與類
類命名 必須 遵循 StudlyCaps 大寫(xiě)開(kāi)頭的駝峰命名規(guī)范;
每個(gè)類都獨(dú)立為一個(gè)文件,且命名空間至少有一個(gè)層次:頂級(jí)的組織名稱(vendorname)
類屬性:小寫(xiě)開(kāi)頭駝峰 $studlyCaps
類方法:小寫(xiě)開(kāi)頭駝峰
常量
類中的常量所有字母都 必須 大寫(xiě),單詞間用下劃線分隔;
方法名稱 必須 符合 camelCase 式的小寫(xiě)開(kāi)頭駝峰命名規(guī)范。
PSR-2編碼風(fēng)格規(guī)范縮進(jìn)
代碼 必須 使用4個(gè)空格符而不是「Tab 鍵」進(jìn)行縮進(jìn)。
行
每行的字符數(shù) 應(yīng)該 軟性保持在 80 個(gè)之內(nèi),一定不可 多于 120 個(gè),但 一定不可 有硬性限制。
所有PHP文件必須以一個(gè)空白行作為結(jié)束。
每行 一定不可存在多于一條語(yǔ)句 每個(gè) namespace 命名空間聲明語(yǔ)句和 use 聲明語(yǔ)句塊后面,必須 插入一個(gè)空白行。
類的開(kāi)始花括號(hào)({) 必須 寫(xiě)在函數(shù)聲明后自成一行,結(jié)束花括號(hào)(})也 必須寫(xiě)在函數(shù)主體后自成一行。
方法的開(kāi)始花括號(hào)({) 必須 寫(xiě)在函數(shù)聲明后自成一行,結(jié)束花括號(hào)(})也 必須 寫(xiě)在函數(shù)主體后自成一行。
控制結(jié)構(gòu)的開(kāi)始花括號(hào)({) 必須 寫(xiě)在聲明的同一行,而結(jié)束花括號(hào)(}) 必須 寫(xiě)在主體后自成一行。
修飾符
類的屬性和方法 必須 添加訪問(wèn)修飾符(private、protected 以及 public),abstract 以及final 必須 聲明在訪問(wèn)修飾符之前,而 static 必須 聲明在訪問(wèn)修飾符之后。
空格
類方法參數(shù)每個(gè)逗號(hào)后面必須要有一個(gè)空格,而逗號(hào)前面 一定不可 有空格
控制結(jié)構(gòu)的開(kāi)始左括號(hào)后和結(jié)束右括號(hào)前,都 一定不可 有空格符。
關(guān)鍵字
控制結(jié)構(gòu)的關(guān)鍵字后必須要有一個(gè)空格符,而調(diào)用方法或函數(shù)時(shí)則一定不可有。
PHP所有 關(guān)鍵字 必須 全部小寫(xiě),常量 true 、false 和 null 也 必須 全部小寫(xiě)。
PSR-3日志接口規(guī)范LoggerInterface 接口對(duì)外定義了八個(gè)方法,分別用來(lái)記錄 RFC 5424 中定義的八個(gè)等級(jí)的日志:debug、 info、 notice、 warning、 error、 critical、 alert 以及 emergency 。
第九個(gè)方法 —— log,其第一個(gè)參數(shù)為記錄的等級(jí)。可使用一個(gè)預(yù)先定義的等級(jí)常量作為參數(shù)來(lái)調(diào)用此方法,必須 與直接調(diào)用以上八個(gè)方法具有相同的效果。
如果傳入的等級(jí)常量參數(shù)沒(méi)有預(yù)先定義,則 必須 拋出PsrLogInvalidArgumentException 類型的異常。在不確定的情況下,使用者 不該 使用未支持的等級(jí)常量來(lái)調(diào)用此方法。
/** * 日志等級(jí)常量定義 */ class LogLevel { constEMERGENCY="emergency"; constALERT ="alert"; constCRITICAL ="critical"; constERROR ="error"; constWARNING ="warning"; constNOTICE ="notice"; constINFO ="info"; constDEBUG ="debug"; }PSR-4自動(dòng)加載規(guī)范
類似如下范例:
完全合規(guī)類名必須有一個(gè)頂級(jí)命名空間(Vendor Name)
完全合規(guī)類名可以有多個(gè)子命名空間
完全合規(guī)類名應(yīng)該有一個(gè)終止類名
下劃線在完全合規(guī)類名中是沒(méi)有特殊含義的
字母在完全合規(guī)類名中可以是任何大小寫(xiě)的組合
所有類名必須以大小寫(xiě)敏感的方式引用
終止類名對(duì)應(yīng)一個(gè)以 .php 結(jié)尾的文件。文件名必須和終止類名大小寫(xiě)匹配
一些實(shí)際商用項(xiàng)目中使用的規(guī)范控制層
不出現(xiàn)sql語(yǔ)句(sql封裝到模型層然后作為方法調(diào)用)
sql語(yǔ)句、3行以上邏輯代碼空行
上下文關(guān)系函數(shù)或方法間不空行
bool使用if(true === $name)的形式
使用雙引號(hào)鏈接變量
注意隱式轉(zhuǎn)換
使用全局變量需要注釋其含義,取值范圍:
8 函數(shù)頭部如下注釋:
或者
9 注釋間空行:
10 文件頭部注釋:
或者
11 switch語(yǔ)句的case跳轉(zhuǎn)需要注釋
12 標(biāo)記變量的命名:
13 接口的命名前綴
14 狀態(tài)碼盡量使用常量,而不是難以理解的數(shù)字
15 類文件名使用首大寫(xiě)駝峰方式,普通文件名使用下劃線方式
16 配置里的變量名使用下劃線方式
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30757.html
摘要:它包含兩類腳本,和地址腳本對(duì)文件定義了一系列的代碼規(guī)范通常使用官方的代碼規(guī)范標(biāo)準(zhǔn),比如的,能夠檢測(cè)出不符合代碼規(guī)范的代碼并發(fā)出警告或報(bào)錯(cuò)可設(shè)置報(bào)錯(cuò)等級(jí)。腳本能自動(dòng)修正代碼格式上不符合規(guī)范的部分。 Last-Modified: 2019年5月10日13:59:27 參考鏈接 PHP開(kāi)發(fā)規(guī)范之使用phpcbf腳本自動(dòng)修正代碼格式 在PhpStorm中使用PSR2編碼規(guī)范phpcbf腳本自...
摘要:腳本對(duì)文件定義了一系列的代碼規(guī)范通常使用官方的代碼規(guī)范標(biāo)準(zhǔn),比如的,能夠檢測(cè)出不符合代碼規(guī)范的代碼并發(fā)出警告或報(bào)錯(cuò)可設(shè)置報(bào)錯(cuò)等級(jí)。比如規(guī)范中對(duì)每一個(gè)文件的結(jié)尾都需要有一行空行,那么運(yùn)行這個(gè)腳本后就能自動(dòng)在結(jié)尾處加上一行空行。 showImg(https://segmentfault.com/img/remote/1460000011338137); 有些同學(xué)可能還沒(méi)聽(tīng)過(guò)這東西,大概介紹...
摘要:的使命是實(shí)現(xiàn)框架之間的互操作性。個(gè)人和官方都認(rèn)為開(kāi)發(fā)者應(yīng)該遵循更為嚴(yán)格的代碼標(biāo)準(zhǔn),在現(xiàn)代的生態(tài)系統(tǒng)中,風(fēng)格統(tǒng)一,可以更好的讓其他開(kāi)發(fā)者理解代碼。記錄的消息用于診斷檢查和排除應(yīng)用中的操作穩(wěn)定性和性能方面的問(wèn)題。 原文是在我自己博客中,小伙伴也可以點(diǎn)閱讀原文進(jìn)行跳轉(zhuǎn)查看,還有好聽(tīng)的背景音樂(lè)噢~ ????PSR是PHP Standards Recommendation的簡(jiǎn)稱,意為PHP推薦標(biāo)...
摘要:命名空間需要遵循自動(dòng)加載規(guī)范。和之后的版本必須使用規(guī)范的命名空間。這三種類型都要遵守以下規(guī)范常量類常量必須由大寫(xiě)字母組成,單詞間由下劃線組成。一旦使用了其中的某一項(xiàng)命名凡是,應(yīng)該在一定的代碼內(nèi)保持一致庫(kù),包,類,或者方法范圍內(nèi)。 基本編碼規(guī)范 此PHP標(biāo)準(zhǔn)包含了如何去編寫(xiě)高通用性代碼中那些標(biāo)準(zhǔn)元素(class,function ,ect.)的正確姿勢(shì)!在RFC 2119文檔中描述了關(guān)鍵...
摘要:前言在開(kāi)始之前,歡迎關(guān)注我自己的博客這篇文章是對(duì)自動(dòng)加載功能的一個(gè)總結(jié),內(nèi)容涉及的自動(dòng)加載功能的命名空間的與標(biāo)準(zhǔn)等內(nèi)容。要實(shí)現(xiàn)第一步,第二步的功能,必須在開(kāi)發(fā)時(shí)約定類名與磁盤(pán)文件的映射方法,只有這樣我們才能根據(jù)類名找到它對(duì)應(yīng)的磁盤(pán)文件。 前言 在開(kāi)始之前,歡迎關(guān)注我自己的博客:www.leoyang90.cn 這篇文章是對(duì)PHP自動(dòng)加載功能的一個(gè)總結(jié),內(nèi)容涉及PHP的自動(dòng)加載功能、P...
閱讀 3840·2021-10-12 10:12
閱讀 1471·2021-10-11 10:58
閱讀 2307·2021-10-09 10:01
閱讀 2617·2021-09-24 09:48
閱讀 2713·2021-09-09 11:38
閱讀 3538·2019-08-30 15:44
閱讀 1733·2019-08-30 14:22
閱讀 530·2019-08-29 12:42