PHP的PSR推薦規範,PSR-1,PSR-2,PSR-3,PSR-4詳解
PSR是php standards recommendation(php推薦標準)的簡稱。 PHP-FIG制定了每個推薦的規範用於解決大多數php框架經常會遇到的某個具體問題。 php框架無需頻繁解決相同的問題,他們可以遵守PHP-FIG制定的推薦規範,使用共用的方案來解決。
目前位置,PHP-FIG共發布了5個推薦標準。
PSR-1:基本的代碼風格
PSR-2:嚴格的代碼風格
PSR-3:日誌記錄器接口
PSR-4:自動加載
注意:在這裡你可能發現只有四個推薦標準,可是前面你說是五個標準。 PHP-FIG廢棄了第一份推薦規範PSR-0。第一份推薦標準被新發布的PSR-4替代了。
PSR-1:基本的代碼風格
PHP標籤:
必須把php代碼放在<?php ?>或<?= ?>標籤中。不得使用其他的PHP標籤語法。
編碼:
所有PHP文件都必須使用UTF-8字符集編碼。
目的:
一個PHP文件可以定義符號(類、性狀、函數和常量等),或者執行有副作用的操作(例如:生成結果或者處理數據),但不能呢個同時做這兩件事。這是一個簡單的要求,我們只需要深謀遠慮一點。
自動加載:
PHP命名空間和類必須遵守PSR-4自動加載器標準。
類的名稱:
PHP類的名稱使用駝峰式。
常量的名稱:
PHP常量的名稱必須全部使用大寫。
方法的名稱:
PHP方法的名稱必須一直使用駝峰式。
PSR-2:嚴格的代碼風格
在使用PSR-2推薦規範的前提是,必須遵守PSR-1推薦規範。
縮進:
PSR-2推薦規範要求PHP代碼使用4個空格縮進。
因為,在不同的編輯器中,空格的渲染效果基本一致的,但是製表符卻不一致。
文件和代碼行:
PHP文件必須使用UNIX風格的換行符,最後要有一個空行,而且不能使用PHP關閉標籤?>。每行代碼不能超過80個字符,至少不能超過120字符。每行的末尾不能有空格。
為什麼PHP文件不使用?>關閉標籤?
因為我們不寫關閉標籤,這樣能避免意外的輸出錯誤。如果加上關閉標籤?>,而且在關閉標籤的後面出現空行,那麼這個空行會被當成輸出,導致出錯。
關鍵字:
PSR-2推薦規範要求,PHP關鍵字都應該使用小寫字母。
命名空間:
每個命名空間聲明語句後必須跟著一個空行。
類:
類定義的結束括號必須在定義體之後新起一行寫。如果擴展其他類或實現接口,extends和implements關鍵字必須和類名寫在同一行。
<?php namespace my\app class Admin extends User { // 類的定義體 }
方法:
方法定義體的括號位置和類定義體的括號位置一樣:方法定義體的起始括號要在方法名之後新起一行寫;方法定義體的結束括號要在定義體之後新起一行寫。要特別注意方法的參數;起始圓括號之後沒有空格,結束括號之前也沒有空格。方法的每個參數(除了最後一個)後面有一個逗號和空格。
<?php namespace my\app class Admin extends User { public function AdminLogin($num=1, $name='abc') { // 方法的定義體 } }
可見性:
類中的每個屬性和方法都要聲明可見性。可見性由public,protected或private指定,其作用是決定在類的內部和外部訪問屬性和方法。如果把類屬性和方法聲明為abstract和final,這兩個限定符必須放在可見性關鍵字之前。如果把屬性或方法聲明為static,這個限定符必須放在可見性關鍵字之後。
<?php namespace my\app class Admin { public static $name =1; public function __construct() { static::$name++; } }
拓展:
abstract是什麼,怎麼使用?
abstract是抽象的意思。
1、沒有抽象方法的抽像類是沒有意義的。
2、抽象方法在子類中必須重寫。
3、抽象方法在類中,此類必須聲明為抽像類。
4、抽像類中,不能重寫父類的抽象方法。
final是什麼,怎麼使用?
final是最終的意思。
1、final類不可被繼承。
2、final方法不可重寫。
static是什麼,怎麼使用?
static是靜態的意思。
1、類中:
self::屬性 self::方法。
2、子類:
parent::屬性 parent::方法。
3、外部:
類名/子類名::屬性 類名/子類名::方法
控制結構: