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, CentOS, phpize

在旧版的CentOS上找不到phpize,无法编译php扩展。

在旧版的CentOS上找不到phpize,无法编译php扩展。 如何安装phpize呢?

laravel,trait,php

我的Browser Trait、webp图档支持功能检测及是否为手机检测

PHP trait相信很多人都不陌生,因为Laravel到处可见,但我还是写出来分享给有缘人🙄。PHP trait可以让两个不同的CLASS都可以使用相同的方法。他不但能降低复杂度,更可让进程码重复被使用。所以放个Browser系列功能在Laravel的ViewServiceProvider上使用,应该是满方便的😝

php

如何在旧版的CentOS 5.11安装PHP 7.1.7呢?

如何在旧版的CentOS 5.11安装PHP 7.1.7呢? 自行编译时发生了insfinit错误,本文介绍我的方式。