來源:不言 發(fā)布時(shí)間:2018-12-15 16:12:52 閱讀量:1189
這篇文章主要介紹了關(guān)于php大牛分享:php代碼編寫的規(guī)范,總結(jié)的很全,有著一定的參考價(jià)值,現(xiàn)在分享給大家,有需要的朋友可以參考一下
一直以來,php都是Web開發(fā)中使用最頻繁的編程語言,也正因?yàn)槿绱?眾多的從業(yè)者,導(dǎo)致了很多不規(guī)范的代碼。
PHP-FIG(PHP框架接口組織)制定了一整套完善的標(biāo)準(zhǔn),推薦給廣大的php開發(fā)使用。
一共制定了五套標(biāo)準(zhǔn):
(PSR: PHP推薦標(biāo)準(zhǔn))
PSR-1: 基本的代碼風(fēng)格;
PSR-2: 嚴(yán)格的代碼風(fēng)格;
PSR-3: 日志記錄器接口;
PSR-4: 自動加載
其實(shí)還有一個(gè)PSR-0,不過已被PSR-4代替了,所以不存在 PSR-0版本。
一、PSR-1:基本代碼風(fēng)格
1. 標(biāo)簽: 必須要把php代碼寫在 <?php 和 ?>, 或者 <?= 和 ?>標(biāo)簽中,不得使用其它格式的標(biāo)簽;
2. 編碼: 必須采用無BOM頭的UTF-8字符集,目前大多數(shù)的IDE編輯器都自動支持;
3. 類名: 必須采用駝峰式: CamelCase,這種格式也叫標(biāo)題式,例如: IndexController;
4. 常量: 必須采用大寫字母,多個(gè)單詞之間采用下劃線連接: APP_PATH;
5. 方法: 必須采用小駝峰式: camelCase(),例如: getStatus();
二、PSR-2: 嚴(yán)格的代碼風(fēng)格
1. 代碼必須首先符合PSR-1的規(guī)范;
2. 縮進(jìn): 必須統(tǒng)一采用四個(gè)空格;
3. 換行: 必須使用UNIX換行風(fēng)格;
4. 結(jié)尾: 必須要有一個(gè)空行,并且不允許有關(guān)閉標(biāo)簽 ?>;
5. 每行代碼不超過80字符,最多不能超過120個(gè)字符;
6. 關(guān)鍵字全部使用小寫字母,例如: true,false,use....;
7. 命名空間:后面必須緊跟一個(gè)空行;
8. use導(dǎo)入空間后,也必須緊跟一個(gè)空行;
9. 類的起始括號{, 必行另起一行;
10. 方法與函數(shù)的起始括號{,也必須另起一行;
11. 類中所有成員,必須聲明可見性:public, protected,private;
12. 類中成員的特征: abstract, final, 必須放在可見性聲明之前;
13. static 關(guān)鍵字,必須放在類成中的可見性聲明之后;
14. 控制結(jié)構(gòu)的起始括號必須與語句在同一行,例如: if () {};
15. 控制結(jié)構(gòu)的參數(shù)之間,逗號之后必須要有空格,例如:($m, $n);
三、PSR-3: 日志記錄接口
這個(gè)規(guī)范與前面的規(guī)范不同,它不是一個(gè)推薦標(biāo)準(zhǔn),而是一個(gè)接口標(biāo)準(zhǔn),規(guī)則了日志記錄器可以實(shí)現(xiàn)的方法。
只要遵循這個(gè)標(biāo)準(zhǔn),就必須實(shí)現(xiàn)以下9個(gè)方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
四、PSR-4: 自動加載器
1. 為什么要有自動加載器?
之前一個(gè)php腳本中,可能會加載大量的文件:
1 2 3 4 5 |
|
有了自動加載器,就可以根據(jù)功能,按需加載。
在沒有該標(biāo)準(zhǔn)之前, 我們可以通過__autoload()和spl_autoload_register()進(jìn)行加載器注冊,現(xiàn)在可以借助命名空間實(shí)現(xiàn)自動加載。
2. 自動加載原理
主要是將類,接口,trait等所在文件路徑,與代碼的命名空間進(jìn)行映射,使之一一對應(yīng),賦予了命名空間第二次生命。
例如:
1 2 3 4 5 6 |
|
說明:
1. 類名: app\controller\UserController;
2. 類文件與類同名: app/controller/UserController.php
3. 類名與類文件名,通過命名空間進(jìn)行映射:
1 2 3 4 5 |
|
4. 將類名與命名空間進(jìn)行關(guān)聯(lián),是現(xiàn)代php開發(fā)框架的基礎(chǔ),composer也是基于此實(shí)現(xiàn)了組件自動加載;
在線
客服
客服
熱線
7*24小時(shí)客服服務(wù)熱線
關(guān)注
微信
關(guān)注官方微信