PHP最佳實踐系列之標(biāo)準(zhǔn)

PHP-FIG

1).即PHP Framework Interop Group。這個組織發(fā)布推薦的規(guī)范,而不是強制規(guī)范。
2).PHP-FIG的使命是實現(xiàn)框架的互操作性拦坠。框架的互操作性指的是通過自動加載機制剩岳、接口和標(biāo)準(zhǔn)的風(fēng)格贞滨,讓框架互相合作。
3).框架之間通過接口拍棕、自動加載和標(biāo)準(zhǔn)的編碼風(fēng)格進(jìn)行合作晓铆。

PSR

1).即PHP推薦標(biāo)準(zhǔn)。這是上面的組織制定的推薦規(guī)范绰播。例如下面的規(guī)范:

  • PSR-1:基本的代碼風(fēng)格
    • 必須把PHP代碼放在<?php ?><??>標(biāo)簽中骄噪。
    • 編碼字符集必須是UTF-8
    • 一個PHP文件可以定義類或者處理數(shù)據(jù),但是不能同時做這兩件事
    • 遵循自動加載
    • 類命名遵循駝峰式命名
    • 常量大寫
    • 方法名稱使用第一個字母小寫的駝峰式命名
  • PSR-2:嚴(yán)格的代碼風(fēng)格
    • 貫徹執(zhí)行PSR-1
    • 使用四個空格縮進(jìn)
    • 使用UNIX風(fēng)格換行符
    • 不能使用關(guān)閉標(biāo)簽
    • 每一行不能超過120個字符
    • PHP關(guān)鍵字一律小寫
    • 命名空間之后必須跟一個空行
    • 類的定義體起始括號應(yīng)該在類命后新起一行蠢箩,類的結(jié)束括號也必須新起一行
    • 方法名的括號換行方式和類一直链蕊,參數(shù)除了第一個參數(shù)前面要有空格。
    • 必須聲明屬性和方法的可見性
    • 控制結(jié)構(gòu)關(guān)鍵字后面的起始括號應(yīng)該和控制結(jié)構(gòu)的關(guān)鍵字寫在同一行谬泌,結(jié)束括號另起一行滔韵。例子如下
<?php
$gorilla = new \Animals\Gorilla;
$libs = new \Animals\StrawNeckedIbis;
if ($gorilla->isAwake() === true) {
         do {
             $gorilla->beatChest();
         } while ($libs->isAsleep() === true);
         $libs->flyAway();
}
- 可以使用php code sniffer檢查代碼格式 
  • PSR-3:日志記錄接口
    • 該規(guī)范不是一系列方針,而是一個接口掌实,規(guī)定了PHP日志記錄器組件可以實現(xiàn)的方法陪蜻。
  • PSR-4:自動加載
    • 這個規(guī)范描述了一個標(biāo)準(zhǔn)的自動加載策略。自動加載策略是指在運行時按需查找PHP類贱鼻、接口或者形狀宴卖,并將其載入PHP解析器滋将,支持PSR-4自動加載器標(biāo)準(zhǔn)的PHP組件和框架使用同一個自動加載器就能找到相關(guān)代碼,然后將其載入PHP解釋器症昏。
    • 該規(guī)范的精髓是把命名空間的前綴和系統(tǒng)中的目錄對應(yīng)起來耕渴。
    • 自己實現(xiàn)psr-4自動加載器
<?php
spl_autoload_register(function ($class) {
    //這個項目的命名空間前綴
    $prefix = 'Foo\\Bar\\';
    //這個項目命名空間前綴對應(yīng)的基目錄
    $base_dir = __DIR__ . '/src/';
    //參數(shù)傳入的類使用這個命名空間前綴嗎?
    $len = strlen($prefix);
    if (strncmp($prefix, $class, $len) != 0) {
        //不使用齿兔,交給下一個自動加載器處理
        return;
    }
    //去掉前綴的類名
    $relative_class = substr($class, $len);
    //把命名空間前換成基目錄
    //去掉前綴中的類名橱脸,把命名空間分隔符換成目錄分隔符
    //然后在后面加上.php
    $file = $base_dir . str_replace('\\' , '/', $relative_class) . '.php';

    if (file_exists($file)) {
        require $file;
    }
});

這樣的話當(dāng)我們使用\Foo\Bar\Baz\Qux這個類的時候,使用SPL注冊了上面這個函數(shù)之后分苇,PHP就會嘗試從/path/to/project/src/Baz/Qux.php 加載這個類添诉。

專題系列

PHP專題系列目錄地址:https://github.com/xx19941215/webBlog
PHP專題系列預(yù)計寫二十篇左右,主要總結(jié)我們?nèi)粘HP開發(fā)中容易忽略的基礎(chǔ)知識和現(xiàn)代PHP開發(fā)中關(guān)于規(guī)范医寿、部署栏赴、優(yōu)化的一些實戰(zhàn)性建議,同時還有對Javascript語言特點的深入研究靖秩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末须眷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子沟突,更是在濱河造成了極大的恐慌花颗,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惠拭,死亡現(xiàn)場離奇詭異扩劝,居然都是意外死亡,警方通過查閱死者的電腦和手機职辅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門棒呛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人域携,你說我怎么就攤上這事簇秒。” “怎么了秀鞭?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵趋观,是天一觀的道長。 經(jīng)常有香客問我气筋,道長拆内,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任宠默,我火速辦了婚禮,結(jié)果婚禮上灵巧,老公的妹妹穿的比我還像新娘搀矫。我一直安慰自己抹沪,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布瓤球。 她就那樣靜靜地躺著融欧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卦羡。 梳的紋絲不亂的頭發(fā)上噪馏,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音绿饵,去河邊找鬼欠肾。 笑死,一個胖子當(dāng)著我的面吹牛拟赊,可吹牛的內(nèi)容都是我干的刺桃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吸祟,長吁一口氣:“原來是場噩夢啊……” “哼瑟慈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起屋匕,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤葛碧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后过吻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吹埠,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年疮装,在試婚紗的時候發(fā)現(xiàn)自己被綠了缘琅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡廓推,死狀恐怖刷袍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情樊展,我是刑警寧澤呻纹,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站专缠,受9級特大地震影響雷酪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涝婉,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一哥力、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦吩跋、人聲如沸寞射。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桥温。三九已至,卻和暖如春梁丘,著一層夾襖步出監(jiān)牢的瞬間侵浸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工氛谜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掏觉,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓混蔼,卻偏偏與公主長得像履腋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惭嚣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 良好實踐晚吞,這次主要挑了一些開發(fā)PHP應(yīng)用時應(yīng)該運用上的良好實踐進(jìn)行詳細(xì)記錄延旧,特別是良好實踐部分中密碼和流兩個點。關(guān)...
    BeckJiang閱讀 2,119評論 6 41
  • 什么是psr-0,psr-1,psr-2標(biāo)準(zhǔn) FIG組織在制定跟PHP相關(guān)規(guī)范槽地,簡稱PSR迁沫,PSR旨在通過討論我們...
    meng_philip123閱讀 1,688評論 0 2
  • PHP社區(qū)已從中心化的框架進(jìn)化為分布式生態(tài)系統(tǒng),分布式生態(tài)系統(tǒng)中組件效率高捌蚊、互操作性好集畅、作用單一。 PHP-FIG...
    JunChow520閱讀 379評論 1 1
  • 整理自 PHP 標(biāo)準(zhǔn)規(guī)范 作為程序員來說缅糟,采用統(tǒng)一的編碼風(fēng)格是非常重要的挺智。這將給未來代碼的編寫、閱讀節(jié)省大量時間窗宦。...
    野塵lxw閱讀 707評論 0 2
  • 組件 (Component) 是 Vue.js 最強大的功能之一赴涵。組件可以擴展 HTML 元素媒怯,封裝可重用的代碼。...
    猿分讓我們相遇閱讀 1,160評論 0 0