所有 PSR 规范请见:https://learnku.com/docs/psr
https://learnku.com/laravel/t/2079/psr-specification-psr-2-coding-style-specification
https://psr.phphub.org/
编码风格指南
本篇规范是 PSR-1 基本代码规范的继承与扩展。
本规范希望通过制定一系列规范化PHP代码的规则,以减少在浏览不同作者的代码时,因代码风格的不同而造成不便。
当多名程序员在多个项目中合作时,就需要一个共同的编码规范,
而本文中的风格规范源自于多个不同项目代码风格的共同特性,
因此,本规范的价值在于我们都遵循这个编码风格,而不是在于它本身。
关于「能愿动词」的使用
为了避免歧义,文档大量使用了「能愿动词」,对应的解释如下:
必须 (MUST)
:绝对,严格遵循,请照做,无条件遵守;一定不可 (MUST NOT)
:禁令,严令禁止;应该 (SHOULD)
:强烈建议这样做,但是不强求;不该 (SHOULD NOT)
:强烈不建议这样做,但是不强求;可以 (MAY)
和可选 (OPTIONAL)
:选择性高一点,在这个文档内,此词语使用较少;
参见:RFC 2119
1. 概览
-
代码 必须 遵循 [PSR-1]() 中的编码规范 。
-
代码 必须 使用4个空格符而不是「Tab 键」进行缩进。
-
每行的字符数 应该 软性保持在 80 个之内,理论上 一定不可 多于 120 个,但 一定不可 有硬性限制。
-
每个
namespace
命名空间声明语句和use
声明语句块后面,必须 插入一个空白行。 -
类的开始花括号(
{
) 必须 写在类声明后自成一行,结束花括号(}
)也 必须 写在类主体后自成一行。 -
方法的开始花括号(
{
) 必须 写在函数声明后自成一行,结束花括号(}
)也 必须 写在函数主体后自成一行。 -
类的属性和方法 必须 添加访问修饰符(
private
、protected
以及public
),abstract
以及final
必须 声明在访问修饰符之前,而static
必须 声明在访问修饰符之后。 -
控制结构的关键字后 必须 要有一个空格符,而调用方法或函数时则 一定不可 有。
-
控制结构的开始花括号(
{
) 必须 写在声明的同一行,而结束花括号(}
) 必须 写在主体后自成一行。 - 控制结构的开始左括号后和结束右括号前,都 一定不可 有空格符。
1.1. 例子
以下例子程序简单地展示了以上大部分规范:
<?php namespace VendorPackage; use FooInterface; use BarClass as Bar; use OtherVendorOtherPackageBazClass; class Foo extends Bar implements FooInterface { public function sampleFunction($a, $b = null) { if ($a === $b) { bar(); } elseif ($a > $b) { $foo->bar($arg1); } else { BazClass::bar($arg2, $arg3); } } final public static function bar() { // 方法的内容 } }