PSR : php编码规范
诸王混战
关于开发标准这块,可以说一直都是风格迥异,各家都有各家的玩法,民间更是个人玩个人的。目前我们国内比较出名的几个框架(Yii,Laravel) 都已经支持Composer并且加入了PHP-FIG(php框架程序组)。
其中Composer的自动加载就支持PHP-FIG指定的PSR-0 和 PSR-4 规范来实现自动加载机制,并且Composer推荐使用PSR-4
PHP-FIG
这是一个自愿非正式的机构,但是就目前对我们的影响来看,可能都已经默认为一个公信组织了,的的确确制定了不少非常好的规范
目前从官网看,已经投票( http://www.php-fig.org/psr/ )通过的有7个大的规范了
PSR-0 自动加载规范 ( 官方已废弃,主要是php5.3以前没有命名空间 )
PSR-1 编码规范
PSR-2 编码风格推荐
PSR-3 日志接口
PSR-4 改进的自动加载规范( 官方推荐 ,规范更简洁调理清晰了)
PSR-6 缓存接口
PSR-7 HTTP消息接口
Composer自动加载
在Composer 依赖管理工具实现的autoload 推荐第三方依赖库或者项目使用 PSR-4,但是Composer本身 也是向下兼容PSR-0的
博文(Composer : php依赖管理工具)中演示代码中,安装了两个库
phpexcel
monolog
这两个库,phpexcel 实现的是PSR-0规范,monolog实现的确实PSR-4规范,这是从各自库目录下面的composer.json文件得知的
PSR-0 与 PSR-4 区别
其实PSR-0 和 PSR-4 在内容上差异不大,这里也就不说定义了
PSR-0中最后一个\之后的类名,如有下划线会转化成路径分隔符 如Name_Space_Test会转换成Name\Space\Test.php,这是出于对PHP5.3以前版本兼容的考虑
PSR-0有更深的目录结构,比如定义了NS为 Foo\Bar=>vendor\foo\bar\src,use Foo\Bar\Tool\Request调用NS。
如果以PSR-0方式加载,实际的目录为vendor\foo\bar\src\Foo\Bar\Tool\Request.php
如果以PSR-4方式加载,实际目录为vendor\foo\bar\src\Tool\Request.php
参考文档
php-fig中文版: https://github.com/PizzaLiu/PHP-FIG
php-fig官网:http://www.php-fig.org/