Cyber Coding Course

師其意,不泥其跡

淺談PSRs

PSR全稱叫做「PHP標準建議」(PHP Standards Recommendations)。由FIG(PHP框架互用性群組)所制定的建議規範,
這個群組是在2009年的php|tek由一些框架的開發者發起的,由最初的5個到現在已超出20多個了。

在「PHP標準建議」中有很多的編號,每個編號代表了不同的規範

例如:
PHP標準建議編號1(PSR-1),基本編碼標準. 像是類別(Class)名稱必需宣告為StudlyCaps,方法(Method)的名稱需宣告為camelCase..等
PHP標準建議編號2(PSR-2),則是PSR-1的擴充,規範了PHP編碼風格,像是extends或是implements必需與class名稱同一行...等。
PHP標準建議編號4(PSR-4),則定義了自動載入(Autoloader標準),Composer也是FIG的成員,
例如現今的Laravel框架中,他的composer.json就可看到使用了PSR-4自動載入的蹤跡,
因為PSR-0的自動載入已被列為棄用(DEPRECATED),但在composer依然還是有支援,如果真的要用。

下表我列出通過的規範,當然也有審核中及草稿階段的。有興趣可參考右方連結: Recommendations (PSRs)
Num Title Editor Coordinator Sponsor
1 Basic Coding Standard Paul M. Jones N/A N/A
2 Coding Style Guide Paul M. Jones N/A N/A
3 Logger Interface Jordi Boggiano N/A N/A
4 Autoloading Standard Paul M. Jones Phil Sturgeon Larry Garfield
6 Caching Interface Larry Garfield Paul Dragoonis Robert Hafner
7 HTTP Message Interface Matthew Weier O’Phinney Beau Simensen Paul M. Jones
11 Container Interface Matthieu Napoli, David Négrier Matthew Weier O’Phinney Korvin Szanto
13 Hypermedia Links Larry Garfield Matthew Weier O’Phinney Marc Alexander
16 Simple Cache Paul Dragoonis Jordi Boggiano Fabien Potencier
 
PSR-7 HTTP Message Interface為例:
在Slim框架中的reqeust及response物件,就是支援PSR-7介面,這讓Slim非常自由的可以去使用任何PSR-7的實做,
例如:
Slim程式的路由可以不回傳  \Slim\Http\Response 實例. 他可以回傳  \GuzzleHttp\Psr7\CachingStream 實例,
雖然Slim提供了PSR-7實做,然而,我們可以自由換Slim預設的PSR 7物件,改由其他第三方的實做。
 
在Laravel的框架中,我們可以透過加裝函式庫,來獲得一個PSR-7的實例reqeust,而不是Laravel的request。
composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros

一但我們安裝了這些套件,我們就能取得PSR-7的要求。
use Psr\Http\Message\ServerRequestInterface;
Route::get('/', function (ServerRequestInterface $request) {
//
});


 

作者: Devin Yang