PSR : php编码规范

诸王混战

关于开发标准这块,能够说一直都是风格迥异,各家都有各家的玩法,民间更是我的玩我的的。目前咱们国内比较出名的几个框架(Yii,Laravel) 都已经支持Composer而且加入了PHP-FIG(php框架程序组)。php

其中Composer的自动加载就支持PHP-FIG指定的PSR-0 和 PSR-4 规范来实现自动加载机制,而且Composer推荐使用PSR-4
html

PHP-FIG

这是一个自愿非正式的机构,可是就目前对咱们的影响来看,可能都已经默认为一个公信组织了,的的确确制定了很多很是好的规范laravel


目前从官网看,已经投票( http://www.php-fig.org/psr/  )经过的有7个大的规范了
git


  • PSR-0 自动加载规范 ( 官方已废弃,主要是php5.3之前没有命名空间 )github

  • PSR-1 编码规范json

  • PSR-2 编码风格推荐缓存

  • PSR-3 日志接口php框架

  • PSR-4 改进的自动加载规范( 官方推荐 ,规范更简洁调理清晰了)yii2

  • PSR-6 缓存接口composer

  • 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/ 



原文地址: PSR : php编码规范
标签: psr    composer    autoload    php-fig    yii    laravel   

智能推荐

相关文章
相关标签/搜索