因为PHP的灵活性,不少人写起代码来也不讲求一个好的代码规范,使得本就灵活的PHP代码看起来很乱,其实PSR规范中的PSR-1和PSR-2已经定义了在PHP编码中的一些规范,只要咱们好好遵照这些规范,即便是使用灵活的脚本语言,也能写出很是漂亮工整的代码。首先咱们来看一下已经经过的PSR规范,而后大体讲解一下PSR-1和PSR-2规范的一些具体要求。php
已经过的PSR
PSR编号 | 名称 | 说明 |
---|---|---|
1 | 基础编码规范 | 关于PHP标签和基本命名约定等基础的规范 |
2 | 编码风格规范 | 关于大括号的位置和参数列表等编码格式的规定 |
3 | 日志接口规范 | 关于日志级别以及记录日志的行为的规定 |
4 | 自动加载规范 | 关于类和命名空间的命名约定,以及它们与文件系统间映射的规定 |
6 | 缓存接口规范 | 关于缓存管理的规定,其中包括数据类型、缓存项的生存周期、错误处理等 |
7 | HTTP消息接口规范 | 关于HTTP请求和响应的约定 |
PSR-1基础编码规范
- 开闭标签 首先,PHP代码必须以<?php或<?=标签开始。换言之,咱们不该该再使用短标签<?或其它变化形式。
- 反作用 PHP文件要么声明类、接口、函数等,要么执行逻辑操做(如读写文件或向浏览器发送输出),但不该该同时兼具二者。
- 命名 类的命名必须遵照大写开头的驼峰式命名规范。换言之,类名应当以大写字母开头。属性的命名方式没有强制要求,但应该保持一致。方法名称必须符合小写开头的驼峰式命名规范。类常量中的全部字母必须大写,单词之间如下划线分隔。
PSR-2编码风格规范
-
PSR-1要求PHP代码以<?php开头。PSR-2规定,纯PHP文件不该该以一个?>标签结束,而应该以一个空白行结束。html
-
namespace声明后应该插入一个空白行,use声明语句块后也应该要有一个空白行。不要在同一行代码中进行屡次use声明。浏览器
-
类的开始和结束 class关键字、类名,以及extends和implements关键字必须在同一行中。若是一个类实现了多个接口,那么这些接口名能够在类声明的同一行中,也能够各占一行。若是选择将这些接口名放在多行中,那么第一个接口名必须自成一行,而不是跟在implements关键字后面。类的开始花括号({)应该写在函数声明后自成一行,结束花括号(})也应该写在类体后自成一行。也就是说,类声明看起来以下所示缓存
class EarthGame extends Game implements Playable, Savable { //类体 }
也能够将类名与类声明放在同一行中。编辑器
class EarthGame extends Game implements Playble, Savable { //类体 }
-
属性声明 每一个属性都必须有访问修饰符(public、private或protected)。不能够使用关键字var声明属性。PSR-1中已经涵盖了属性名的规范:能够使用下划线、小写驼峰式命名或大写驼峰式命名方式,但应该保持一致。(我的推荐属性采用小写式驼峰)函数
-
方法的开始和结束 全部方法必须具备访问修饰符(public、private或protected)。访问修饰符必须在abstract或final以后,static以前。具备默认值得方法参数应该放在参数列表的末尾。编码
-
单行声明 方法的开始花括号({)应该写在方法名后自成一行,结束花括号(})也应该写在方法体后自成一行(直接跟在方法代码以后)。方法参数列表不该该以空格开始或结束(即应该紧贴包裹着它们的圆括号)。对于每一个参数,参数名(或默认值)后面应该有一个逗号,且逗号后面有一个空格。这听起来彷佛有些复杂,以下所示:spa
final public static function generateTile(int $diamondCount, bool $polluted = false) { //方法体 }
-
* 多行声明 若是方法有不少参数,那么单行方法声明是不实际的。此时咱们能够分割参数列表,以便将每一个参数(包括类型、参数变量、默认值和逗号)单独放在缩进的一行中。这种状况下,结束圆括号应该放在参数列表后面一行中,并与方法声明的开始位置对齐。开始花括号({)应该在同一行的结束圆括号以后,以空格分隔。方法体应该重新的一行开始。一样,这听起来彷佛很复杂,如下示例应该能帮助你理解这条规定。 ```php public function __construct( int $size, string $name, bool $warparound = false, bool $aliens = false ) { //方法体 } ``` 6. 行与缩进 代码应该使用4个空格符来缩进,而不是使用制表符。咱们能够检查编辑器设置,将其设置为按下Tab键时使用4个空格而不是制表符。每行代码的长度不该该超过120个字符。 7. 方法与函数调用 方法名称和开始圆括号之间不能有空格。方法调用中的参数列表的规则与方法声明中的参数列表规则相同。换言之,对于单行调用,开始圆括号后或结束圆括号前不能有空格。每一个参数以后应该紧跟一个逗号,下一个参数前应该有一个空格。若是须要使用多行代码进行方法调用,那么每一个参数应该自成一行并缩进,并且结束圆括号也应该自成一行。 ```php $earthGanme = new EarthGame( 5, 'earth', true, true ); $earthGame::generateTile(5, true);
-
流程控制 流程控制关键字(if、for、while等)后面必须紧跟一个空格。可是,开始圆括号后不能有空格。一样,结束圆括号前不能有空格。所以内容应该紧贴在括号内的。与类和(单行)函数声明相比,流程控制代码的开始花括号应该与结束圆括号在同一行。结束花括号应该自成一行。如下是一个简单的示例。日志
$title = []; for ($x = 0; $x < $diamondCount; $x++) { if ($polluted) { $title[] = new PollutionDecorator(new DiamondDecorator(new Plains())); } else { $title[] = new DiamondDecorator(new Plains()); } }
注意if和for以后的空格。for和if语句与圆括号在同一行,并且它们的结束圆括号后都有一个空格,而后是流程控制体的开始花括号。代码规范
原文出处:https://www.cnblogs.com/itbsl/p/11287149.html