psr是一系列关于php开发的规范,分有好几个版本,自己学的也较为肤浅,但还是希望能时常查看规范,为了方便记忆和遵循,我把关键词为必须的捡拾出来,做个简单地必要规范的记录。(就是个搬砖的。。。)
https://github.com/pizzaliu/php-fig
http://segmentfault.com/a/1190000002521577
官方发布文件版本psr-0(已弃用)
psr-1 基本代码规范
psr-2 代码风格规范
psr-2 补充文档
psr-3 日志接口规范
psr-4 自动载入
psr-5和psr-6投票还未通过
必须psr-1 基本代码规范php代码文件必以 命名空间以及类的命名必须遵循 psr-0.
php 5.3及以后版本的代码必须使用正式的命名空间。
每个类都独立为一个文件,且命名空间至少有一个层次:顶级的组织名称(vendor name)
psr-2 代码风格规范代码必须遵循 psr-1 中的编码规范 。
代码必须使用4个空格符而不是 tab键 进行缩进。
备注: 使用空格而不是tab键缩进的好处在于, 避免在比较代码差异、打补丁、重阅代码以及注释时产生混淆。 并且,使用空格缩进,让对齐变得更方便。
每个 namespace 命名空间声明语句和 use 声明语句块后面,必须插入一个空白行。
类的开始花括号({)必须写在函数声明后自成一行,结束花括号(})也必须写在函数主体后自成一行。
方法的开始花括号({)必须写在函数声明后自成一行,结束花括号(})也必须写在函数主体后自成一行。
类的属性和方法必须 添加访问修饰符(private、protected 以及 public), abstract 以及 final 必须声明在访问修饰符之前,而 static 必须声明在访问修饰符之后。
控制结构的关键字后必须要有一个空格符,而调用方法或函数时则一定不能有。
控制结构的开始花括号({)必须写在声明的同一行,而结束花括号(})必须写在主体后自成一行。
控制结构的开始左括号后和结束右括号前,都一定不能有空格符。
所有php文件必须使用unix lf (linefeed)作为行的结束符。
所有php文件必须以一个空白行作为结束。
纯php代码文件必须省略最后的 ?> 结束标签。
每行一定不能存在多于一条语句。
非空行后一定不能有多余的空格符。
php所有 关键字必须全部小写。
常量 true 、false 和 null 也必须全部小写。
psr-3 日志接口规范psr-4 自动加载规范一个完整的类名需具有以下结构:
\(\)*\完整的类名必须要有一个顶级命名空间,被称为 vendor namespace;完整的类名可以有一个或多个子命名空间;完整的类名必须有一个最终的类名;完整的类名中任意一部分中的下滑线都是没有特殊含义的;完整的类名可以由任意大小写字母组成;所有类名都必须是大小写敏感的。
复制代码
当根据完整的类名载入相应的文件
完整的类名中,去掉最前面的命名空间分隔符,前面连续的一个或多个命名空间和子命名空间,作为“命名空间前缀”,其必须与至少一个“文件基目录”相对应;紧接命名空间前缀后的子命名空间必须与相应的”文件基目录“相匹配,其中的命名空间分隔符将作为目录分隔符。末尾的类名必须与对应的以 .php 为后缀的文件同名。自动加载器(autoloader)的实现一定不能抛出异常、一定不能触发任一级别的错误信息以及不应该有返回值。
复制代码
建议(更多请查看详细文档)psr-1php代码中应该只定义类、函数、常量等声明,或其他会产生 从属效应 的操作(如:生成文件输出以及修改.ini配置文件等),二者只能选其一;
类的属性命名可以遵循 大写开头的驼峰式 ($studlycaps)、小写开头的驼峰式 ($camelcase) 又或者是 下划线分隔式 ($under_score),本规范不做强制要求,但无论遵循哪种命名方式,都应该在一定的范围内保持一致。
psr-2每行的字符数应该软性保持在80个之内, 理论上一定不可多于120个, 但一定不能有硬性限制。
空行可以使得阅读代码更加方便以及有助于代码的分块。
代码示例psr-2 $b) { $foo->bar($arg1); } else { bazclass::bar($arg2, $arg3); } } final public static function bar() { // method body }}
复制代码
php, psr