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

需要登入才可留言!

类似文章


docker,phpenv

用光了Docker IPv4 address pool问题解法

可能在旧版的docker环境,使用Docker compose启动容器时,会碰过下方的错误: Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network这其实这是default-address-pools用光的症状,有些环境,docker-compose默认会使用Class B的私有网络。172段的私有IP是有范围的,从172.16.0.0到172.31.255.255。也就是说,当我们起动一个docker-compose的Project,就会吃掉一个Class B的私有段,非常豪迈,

php

我的拼装车LaNativeRoute

我虽然很喜欢Laravel,Laravel有很多特点都非常棒,像是Eloquent ORM、Model、Blade temple我都非常喜欢, 但是说真的,他真的非常肥大,导致跑起步来好像有点慢,所以我就试著使用我自己想要的方式 抽取我要的功能,拼装出这个自制的框微型架,接近Plain PHP,我想懂php的人都可以上手吧。

docker,phpenv

在Linux上ping不到host.docker.internal

可用docker version检查,确认版本在Docker v20.10+即可添加extra_hosts如下: