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

用PHP透过IMAP清空HiBox的收件夹

收信的信箱爆了,所有的信都不想要,用PHP清空收件夹。 以下是我抄来的范例进程,做了小调整。

php,linux

WebShell功能介绍及注意事项

突然想来介绍什么是WebShell就上网找了一个,他的功能已相当好了, 不过我还想要一些功能,於是就用了三个晚上的时间,替他进行了一些小小的优化。 如果,您还没听过WebShell,快来看看这个影片吧。 如果您喜爱我的优化版本,请给我个赞哦,谢谢啦。

docker,phpenv

在Linux上ping不到host.docker.internal

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