该指导是作为对PSR-1的扩展与拓宽。
1、概述
- 代码必须遵循“编码风格指导”PSR [PSR-1]。
- 代码必须使用4个空格作为缩进,而不是使用tab缩进。
- 不能硬性限制行的长度,软限制必须是120字符,行应当不多于80个字符。
namespace
声明之后,必须跟一个空白行。use
块声明之后,也必须跟一个空白行。- 类后的开花括号必须写在下一行,闭花括号也必须写在类体的下一行。
- 类方法的开花括号、闭花括号必须写在下一行。
- 全部属性和方法都必须声明可见性;
abstract
和final
必须声明在可见性之前;static
必须声明在可见性之后。 - 控制结构关键词之后必须跟随一个空格,方法和函数调用之后不可以跟随空格。
- 控制结构的开花括号必须在统一行内,闭花括号写在主体的下一行。
- 控制结构的开圆括号之后,闭花括号之前一定不可以跟随空格。
- 1.1、示例
下面的示例包含了一些相应的规则。
$b) { $foo->bar($arg1); } else { BazClass::bar($arg2, $arg3); } } final public static function bar() { // 方法体 }}
2、常用
- 2.1、基础编码标准
代码必须遵循PSR-1中的描述
- 2.2、文件
所有的PHP文件都必须使用Unix格式换行符。
所有的PHP文件必须以一个空行结束。
仅包含PHP代码的文件,末尾关闭标签 ?>
必须省略掉。
- 2.3、行
行不可以有硬限制。
行的长度软限制为120个字符。
每行的长度不应该超过80个字符;超出的部分应当分割成多个不超出80字符的跟随行。
非空的行,行尾不可以跟空格。
添加空白行可能会增强可读性并且表明相关代码块。
每一行不可以多于一个声明。
- 2.4、缩进
缩进必须使用4个空格,不可以使用tab作为缩进。
- 2.5、关键词和 True/False/Null
PHP关键词一定要小写。true
, false
和 null
3、命名空间和 Use 声明
namespace
声明之后,必须跟随一个空行。
所有的 use
声明,必须跟随在 namespace
声明之后。
每个声明都必须使用一个 use
关键词。
use
块之后必须跟随一个空行。
例如:
4、类、属性和方法
“类”指类、接口、trailts。
- 4.1、扩展和接口
extends
和 implements
关键词必须和类名声明在同一行。
类的开花括号必须跟随在它自己的行,闭花括号必须跟随在下一行。
implements
的列表,可能会分割为跨越多行,每一个跟随行缩进一次。如果这么做的话,列表中的第一个项必须在下一行,且每行只允许有一个接口。
- 4.2、属性
所有的属性都必须声明可见性。
关键词 var
不可以用于属性声明。
每个表达式不能多于一个属性声明。
不应该以下划线开头的方式,作为暗示该方法为私有或受保护的属性。
- 4.3、方法
所有的方法都必须声明可见性。
不应该以下划线开头的方式,作为暗示该方法为私有或受保护的方法。
方法名的声明之后不可以有空格,括号与参数之间也不可以有空格。
- 4.4、方法参数
参数列表中,每个逗号之前不可以有空格,之后必须有一个空格。
含有默认值的参数,必须放在参数列表最后。
参数列表也许会被拆分为多行,每一个跟随行必须缩进一次。第一项必须放在下一行,且每行只允许一个参数。
闭圆括号必须要和开花括号放在一起,且中间用一个空格分开。
- 4.5、
abstract
,final
, 和static
abstract
和 final
必须在可见性声明之前。
static
必须在可见性声明之后。
- 4.6、方法和函数调用
当调用方法或函数时,名称与圆括号之间不可以有空格。
圆括号之后也不可以有空格。
参数调用,逗号之前不可以有空格,之后必须有一个空格。
bar($arg1);Foo::bar($arg2, $arg3);
参数列表也许会被拆分为多行,每个跟随行必须缩进一次。
第一项必须在下一行中,每行必须只有一个参数。
bar( $longArgument, $longerArgument, $muchLongerArgument);