本规范参考 PSR-1 与 PSR-2,在此标准之上做了更严格的限制和扩充。
本规范仅适用于 PHP 5.4 以上版本。
- PHP 代码文件必须以
<?php
; - PHP 代码文件必须以
不带 BOM 的 UTF-8
编码; - 代码必须使用4个空格符而不是 tab 键进行缩进;
- 所有 PHP 文件必须使用
Unix LF (linefeed)
作为行的结束符; - 所有 PHP 文件必须以一个空白行作为结束;
- 纯 PHP 代码文件必须省略最后的
?>
结束标签; - 视图文件中的 PHP 代码(模板代码除外)必须使用
<?php ?>
长标签 或<?= ?>
短输出标签;一定不可使用其它自定义标签。 - 每行的字符数应该保持在80个之内, 不应该多于120个;
- 非空行后一定不能有多余的空格符;
- 每行一定不能存在多于一条语句。
- PHP代码中应该只定义类、函数、常量等声明或只定义其他会产生
从属效应
的操作(如:生成文件输出、引入文件以及修改 ini 配置文件等),二者只能选其一; - 命名空间以及类必须符合 PSR 的自动加载规范:PSR-4;
- 类的命名必须遵循
StudlyCaps
大写开头的驼峰命名规范; - 类中的常量所有字母都必须大写,单词间用下划线分隔;
- 方法名称必须符合
camelCase
式的小写开头驼峰命名规范; use
声明必须位于namespace
声明之后, 每个namespace
命名空间声明语句块和use
声明语句块后面,必须插入一个空白行;- 类与方法的开始花括号(
{
)必须写在函数声明后自成一行,结束花括号(}
)也必须写在函数主体后自成一行; - 关键词
extends
和implements
必须写在类名称的同一行; - 需要添加
abstract
或final
声明时, 必须写在访问修饰符前,而static
则必须写在其后; - 类的属性和方法必须添加访问修饰符(
private
、protected
以及public
),不要使用下划线_
作为前缀来区分属性是 protected 或 private; - 每条语句一定不能定义超过一个属性,一定不可使用关键字
var
声明一个属性; - 方法及函数的声明和调用时,方法名或函数名与参数左括号之间一定不能有空格,参数左括号后与右括号前也一定不能有空格,参数列表中每个逗号后面必须要有一个空格,而逗号前面一定不能有空格。
- 控制结构的关键字后必须要有一个空格,右括号
)
与开始花括号{
间也一定有一个空格; - 控制结构的开始花括号(
{
)必须写在声明的同一行,而结束花括号(}
)必须写在主体后自成一行; - 控制结构转折(
else
、else if
、catch
以及do ... while
结构中的while
)关键字与上一结构体的结束花括号(}
)必须写在同一行中,两者之间一定有一个空格; - 条件括号左括号后与右括号前一定不能有空格,两个子句句之间(分号之后)一定有一个空格;
- 每个结构体的主体都必须被包含在成对的花括号之中。
- 闭包声明时,关键词
function
后以及关键词use
的前后都必须要有一个空格; - 开始花括号必须写在声明的同一行,结束花括号必须紧跟主体结束的下一行;
- 参数列表和变量列表的左括号后以及右括号前,必须不能有空格;
- 参数和变量列表中,逗号前必须不能有空格,而逗号后必须要有空格。
- PHP所有 关键字 必须全部小写,常量
true
、false
和null
也必须全部小写; array
、emtpy
、isset
、unset
等关键字括号内的变量两端必须不能有多余的空格;- 变量声明应该使用下划线分隔的小写字母,不应该使用非通用的单词简写,不应该出现英文以外的拼写或简写;
- 变量赋值和比较(包括控制结构条件语句和数组中)的操作符(
=
、>
、<
以及=>
)两端必须各有一个空格,但自增(++
)自减(--
)操作变量与符号之间一定不能有空格; - 数组声明和使用都应该使用
[]
代替array()
; - 需要换行数组变量的声明,数组开始符号(
[
或array(
)应该和操作符在同一行,数组的第一个元素应该在新的一行开始,且与上一行之间必须保持一个缩进,数组的结束符号([
或]
)必须新起一行,且应该与变量的第一个字符对齐。