php开发规范-psr系列规范
转自:http://www.cnblogs.com/x3d/p/php-psr-standards.html
PSR
是PHP Standard Recommendation的简写,它其实应该叫PSRs,即系列推荐标准:目前通过的规范有PSR-0(Autoloading Standard)、PSR-1(Basic Coding Standard)、PSR-2(Coding Style Guide)、PSR-3(Logger Interface)、PSR-4(Improved Autoloading)。它不是PHP官方标准,而是从如Zend、Symfony2等知名PHP项目中提炼出来的一系列标准,目前有越来有多的社区项目加入成员并遵循该标准。
PHP-FIG — PHP Framework Interoperability Group, 是制定PSRs开发规范的组织,它的成员由很多知名PHP社区项目组成,在其官网首页下方可以看到成员清单。这些成员制定规范,并且落实在自己的项目中。
其实各个PSR规范的内容都很简洁明了,比起那些动则几十页的规范,真是好太多了。
PSR-0(Autoloading Standard)
PSR-0即类自动加载规范(原文:官网、GitHub)。从2014-10-21日起,该规范被标记为Deprecated,由PSR-4替代。它的内容十分简洁。
内容:
- 一个完全合格的命名空间和类名必须有以下的结构“\<
Vendor Name
>\(<Namespace
>\)*<Class Name
>” - 每个命名空间必须有顶级的命名空间(“Vendor Name”)
- 每个命名空间可以有任意多个子命名空间
- 每个命名空间在被从文件系统加载时必须被转换为“操作系统路径分隔符”(DIRECTORY_SEPARATOR )
- 每个“_”字符在“类名”中被转换为DIRECTORY_SEPARATOR 。“_”符号在命名空间中没有明确含义
- 符合命名标准的命名空间和类名必须以“.php”结尾来加载文件
Vendor Name
,命名空间,类名可以由大小写字母组成,其中命名空间和类名是大小写敏感的以保证多系统兼容性
PSR-1(Basic Coding Standard)
PSR-1即基础编码标准(原文:官网、GitHub)。内荣也十分简洁,包含了类文件、类名、类方法名的命名方法。
内容:
源文件必须只使用 <?php 和 <?= 这两种标签
源文件中php代码的编码格式必须只使用不带BOM的UTF-8
一个源文件建议只用来做声明(类,函数,常量等)或者只用来做一些引起副作用的操作(例如:输出信息,修改.ini配置文件等),但不应该同时做这两件事
命名空间和类必须遵守PSR-0标准
类名必须使用StudlyCaps写法
类中的常量必须只由大写字母和下划线(_)组成
方法名必须使用cameCase写法
PSR-2(Coding Style Guide)
PSR-2即编码风格标准(原文:官网、GitHub)。内容就稍多,但还是比较简洁,它以PSR-1为基础,包含了缩进、每行代码长度、换行、方法可见性声明、空格和方法体大括号换行的相关规定。
标准内容:
代码必须遵守 PSR-1
代码必须使用4个空格来进行缩进,而不是用制表符
一行代码的长度不应有硬限制;软限制必须为120个字符,建议每行代码80个字符或者更少
在命名空间的声明下面必须有一行空行,并且在use的声明下面也必须有一行空行
类的左花括号必须放到其声明下面自成一行,右花括号则必须放到类主体下面自成一行
方法的左花括号必须放到其声明下面自成一行,右花括号则必须放到方法主体的下一行
所有的属性和方法必须有可见性声明;abstract和final声明必须在可见性声明之前;而static声明必须在可见性声明之后
在结构控制关键字的后面必须有一个空格;而方法和函数调用时后面不可有空格
结构控制的左花括号必须跟其放在同一行,右花括号必须放在该结构控制代码主体的下一行
控制结构的左括号之后不可有空格,右括号之前也不可有空格
PSR-3(Logger Interface)
PSR-3是对应用日志类的通过接口的定义(原文:官网、GitHub)。内容很简单,就是一个接口,官方示例代码引用一下就好了。当然,在具体的应用中,只要遵循该接口,肯定可以定制相应的实现。
基础内容:
LoggerInterface暴露八个接口用来记录八个等级(debug, info, notice, warning, error, critical, alert, emergency)的日志。
第 九个方法是log,接受日志等级作为第一个参数。用一个日志等级常量来调用这个方法必须和直接调用指定等级方法的结果一致。用一个本规范中未定义且不为具 体实现所知的日志等级来调用该方法必须抛出一个Psr\Log\InvalidArgumentException。不推荐使用自定义的日志等级,除非你 非常确定当前类库对其有所支持。
PSR-4(Improved Autoloading)
PSR-4即改进版的自动加载规范(原文:官网、GitHub)。它是PSR-0规范的接替者。它可以与任何其它的自动加载规范兼容,包括PSR-0。
内容:
- 术语「类」是一个泛称;它包含类,接口,traits 以及其他类似的结构;
- 完全限定类名应该类似如下范例:<NamespaceName>(<SubNamespaceNames>)*<ClassName>
完全合规类名必须有一个顶级命名空间(Vendor Name)
完全合规类名可以有多个子命名空间
完全合规类名应该有一个终止类名
下划线在完全合规类名中是没有特殊含义的
字母在完全合规类名中可以是任何大小写的组合
所有类名必须以大小写敏感的方式引用
- 当从完全合规类名载入文件时:
在完全合规类名中,连续的一个或几个子命名空间构成的命名空间前缀(不包括顶级命名空间的分隔符),至少对应着至少一个基础目录
在「命名空间前缀」后的连续子命名空间名称对应一个「基础目录」下的子目录,其中的命名 空间分隔符表示目录分隔符。子目录名称必须和子命名空间名大小写匹配
终止类名对应一个以 .php 结尾的文件。文件名必须和终止类名大小写匹配
自动载入器的实现不可抛出任何异常,不可引发任何等级的错误;也不应返回值
php开发规范-psr系列规范的更多相关文章
- PHP的PSR系列规范都有啥内容
PSR 是PHP Standard Recommendation的简写,它其实应该叫PSRs,即系列推荐标准:目前通过的规范有PSR-0(Autoloading Standard).PSR-1(Bas ...
- PHP PSR代码规范
转载: https://www.awaimai.com/916.html PSR是PHP通用性框架小组 (PHP Framework Interop Group) 制定的PHP代码编写格式规范,是PH ...
- PHP PSR 代码规范基本介绍
PSR 是 PHP Standard Recommendation 的简写,即PHP推荐标准. 目前通过的规范有 PSR-0(Autoloading Standard).PSR-1(Basic Cod ...
- psr的规范
基本代码规范 本篇规范制定了代码基本元素的相关标准, 以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 "必须"("MUST")."一定不可 ...
- 前端开发规范:命名规范、html 规范、css 规范、js 规范
上周小组的培训内容是代码可读性艺术,主要分享如何命名.如何优化代码排版,如何写好的注释.我们都知道写出优雅的代码是成为大牛的必经之路. 下面感谢一位前端开发小伙伴总结的前端开发规范,通过学习相关开发规 ...
- 【转】协同开发中SVN使用规范试用
转自:http://www.cnblogs.com/BraveCheng/archive/2012/07/02/2573617.html 协同开发中SVN使用规范试用 目标,要求 本次svn提交规范主 ...
- PHP PSR基本代码规范(中文版)
PSR-1 基本代码规范 本篇规范制定了代码基本元素的相关标准,以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 “必须”("MUST").“一定不可/一定不能”(&qu ...
- amazeui学习笔记二(进阶开发4)--JavaScript规范Rules
amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...
- 前端开发规范:命名规范、HTML 规范、CSS 规范、JavaScript 规范
一个好的程序员肯定是要能书写可维护的代码,而不是一次性的代码,怎么能让团队当中其他人甚至一段时间时候你再看你某个时候写的代码也能看懂呢,这就需要规范你的代码了.我是有一点强迫症的人,上周我们后端给我了 ...
随机推荐
- 次讲解js中的回收机制是怎么一回事。
在前几天的一篇闭包文章中我们简单的介绍了一下闭包,但是并没有深入的讲解,因为闭包涉及的知识点比较多,为了能够更好的理解闭包,今天讲解一下关于js中的回收机制. 在初识闭包一文中我说过js中有回收机制这 ...
- wms-ssv数据字典
--------------------------------------------以下,托盘-- dbo.Container --托盘 , "托盘状态", "Con ...
- pom resource配置
maven pom配置资源resource, make时可自动发布到release目录的 \WEB-INF\classes 下. 解决使用idea时, 每次都需要配置资源文件的手动配置. 具体: &l ...
- group by 语句
user E_book go 这样的程序会出错,因为play没有使用sum,所以要分组. group by play 有函数的和没有函数的表一起使用要用 GROUP BY .AVG 求平均值,只能与数 ...
- PS基础,英语
PS基础(矢量图案的绘制) 水平参考线:新建背景(长宽一致,背景内容为透明)---设置水平参考线(水平垂直都要)---完成. 背景制作:设置前景色---用矩形选框工具绘制正方形选区(背景已被参考线平分 ...
- 2013 Warm up 3 -- Skill --- dp
题意:求n位数字,满足非递减的个数. dp[ i ] [ j ] = sum( dp[i -1] [ k ] ); k =>( j , 9); #include<iostream> ...
- Tomcat服务器配置https认证(使用keytool生成证书)
一.证书生成 1.生成服务器证书 (1)打开打开命令控制台,进入jdk的bin目录 cd D:\Program Files\jdk1.6.0_45\bin (2)keytool为Tomcat生成证书( ...
- PHP DES解密 对应Java SHA1PRNG方式加密
背景及问题 背景:在和外部系统通过HTTP方式跳转时, 为保障传输参数安全性, 采用AES 加密参数. 关于对称加密中 AES, DES, CBC, ECB, PKCS5Padding 概念可参考ht ...
- JavaScript里面的居民们3-去除空格和重复
如代码,分别实现 diyTrim 及 removeRepetition 函数,并跑通代码中的测试用例. <!DOCTYPE html> <html> <head> ...
- 虽然我们可能不想对元素应用3D变换,可我们一样可以开启3D引擎
例如我们可以用transform: translateZ(0); 来开启硬件加速 ..cube {-webkit-transform: translateZ(0);-moz-transform: tr ...