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