PSR规范
psr-1 制定了代码的基本规范 包括类、文件等
- php代码
必须
使用<?php ?> 长标签或者 <?=?>短标签,不能使用自己的自定义标签 - php代码
必须
只能使用不包含bom的utf8文件编码 - 从属效应(副效果)
命名空间以及类的命名必须遵循psr-4的规范
- 每个类独立成一个文件,且命名空间至少要有一个层次。
- 类的命令必须遵循大写字母开头的驼峰命名规范
- 类的常量中所有字母必须大写,词语之间以下划线分割 如 MY_NAME PHP_VERSION
- 类的属性必须遵循小写字母开头的驼峰写法 如 firstName
- 类的方法必须符合小写字母开头的驼峰的写法 如 function getName()
PSR-2
PSR-2规范规定了php代码规范的规则。是psr-1的延伸和拓展
php文件规范
- 文件必须使用Unix LF作为行的结束符
- php文件必须以一个空白行作为结束
- 所有的php文件必须以省略掉文件末尾的 ?>
php 行 规范
- 一行代码的长度不能有硬性的约束,但是一定要下限制在120行个字符以内。超过此字符,带有代码检查代码规范的编辑器要发出警告
- 每行代码不应该多余80个字符,多余80个字符应折成多行
- 非空行后一定不能有多余的空格符
- 空行可以使代码阅读更加方便以及有利于代码的分块
- 每行一定不能存在多条语句 比如 echo ‘1’;echo ‘2’;
php 代码缩进
- 代码必须使用空格符作为缩进,一定不能用tab键
php 关键字规范
- php中所有的关键字应该必须为全部小写。 常量true false null 也必须为小写
php 命名空间以及use 声明
- 所有use 必须在namespace后声明
- 每条use声明语句必须只有一个use关键字
- use语句必须使用一个空白行
<?php namespace A; use A\C; class B{}
php 类 属性、方法
- 关键字extends 和implements 必须卸载类名字的后面的同一行
- 类的开始和结束的花括号必须独自占用一行
- 类的属性必须添加访问修饰符
- 一定不能再使用var声明一个属性
- 每行语句必须不可定义多个属性
- 不要使用下划线来作为前缀来区分属性是protected 还是private
- 类的所有的方法也必须添加访问修饰符 不能使用下划线区分proteted或者private
- 类的方法开始必须独占一行,参数左右括号之间不能有空格
- 类的方法的参数 逗号后面必须有一个空格,逗号前面一定不能有空格,有默认值的一定要放到末尾
- 类的方法的参数,可以分成多列,但是拆成多列的参数 每个参数必须单独成行
- 类的方法的开始括号要和方法在一行。
abstract final 以及static 需要添加声明的时候,staic 必须写在其后面
final public static function test()
- 方法以及函数调用 同8、9
php 控制结构
- 控制结构关键词后面必须要有一个空格
- 左括号后不能有空格 后括号前不能有空格
- 右括号( 和开始花括号之间要有一个空格
结束的花括号一定在单独成行
if ($condition) { }
if 结构留意括号 空格 else 要和前面的花括号在一行
if ($condition) { # code... } else { # code... }
标准的for 和foreach try catch 注意其括号和空格以及你花括号的位置
foreach($arr as $key=> $v){ } for($i=0; $i<10; $i++) { }
PSR-3 日志接口规范
日志接口规范是为了让日志类库更简单,
- 日志接口对外定义8个方法。分别记录八个等级的错误。 debug 、info、notice、warning、error、critical、alert 以及emergency
PSR-4
一个完整的类具有以下结构
\命名空间\子命名空间\类名
- 完整的类名必须有一个或多个子命名空间
- 完整的类名必须有一个顶级的命名空间
- 完整的类名必须必须有一个最终的类名
- 完整的类名中含有下划线是没有任何意义的
- 完整的类名可以由任意的大小写字母组成
完整的类名必须是大小写敏感的
完整的类名中,去掉最前面的命名空间分隔符,前面连续的一个或者多个命名空间,作为命名空间前缀,其必须与至少一个文件基目录相对应
- 紧接命名空间的前缀子命名空间,必须与相对应的文件基目录向匹配。其中的命名空间分隔符作为目录的分隔符。
- 末尾的类名必须以.php为后缀的文件同名
- 自动加载器的实现,一定不能抛出异常,一定不能触发任一级别的错误。