by Devin Yang

建立于: 7年前 ( 更新: 7年前 )

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

需要登入才可留言!

类似文章


php

Apache移除了Authorization Header问题

Apache移除了Authorization Header,在$_SERVER中看不到解法。

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'

php,docker,dlaravel

我创建的phpenv容器环境简单介绍

没时间拍介绍影片,我就来随便抓些画面介绍我使用的容器环境deviny/phpenv。https://github.com/DevinY/phpenvphpenv算是我之前D-Laravel开源项目的进化版本,概念上延用了很多Dlaravel的操作方式。容器的更新上偏向使用者自行控制去Build自己的image,所以我不太会去更动版号了,其实D-Laravel的php版号,好像我也很久没动啦:p