by Devin Yang

建立於: 6年前 ( 更新: 6年前 )

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) {
//
});


 

Tags: php

Devin Yang

文章內容無法一一說明,如果您有什麼不了解處,歡迎提問哦:)

No Comment

Post your comment

需要登入才可留言!

類似的文章


fastapi,phpenv,docker

我如何用phpenv建立fastapi執行環境

雖然phpenv主要用於運行PHP Laravel的環境,但不代表他不能跑其他語言或其他容器。本文介紹,我如何讓phpenv跑python的fastapi環境,當然這只是一個概念,目前為止,我已經讓PHP api跑HAProxy了,並且自動申請及更新免費憑證,現在就讓他來跑Python的fastapi吧。phpenv沒有什麼限制,限制的是您的想像力😆

php

我的拼裝車LaNativeRoute

我雖然很喜歡Laravel,Laravel有很多特點都非常棒,像是Eloquent ORM、Model、Blade temple我都非常喜歡, 但是說真的,他真的非常肥大,導致跑起步來好像有點慢,所以我就試著使用我自己想要的方式 抽取我要的功能,拼裝出這個自製的框微型架,接近Plain PHP,我想懂php的人都可以上手吧。

docker,php,cli

MacOS的php不給力,用docker執行laravel installer

非常簡單呀,加個「別名」就好了alias laravel='docker run --rm -v ${PWD}:/var/www/html -v ~/.dlaravel/cache:/home/dlaravel/.composer/cache -ti deviny/fpm:8.1.10 /home/dlaravel/.composer/vendor/bin/laravel'