PHP编码规范-PSR1
详细见php规范官网:
https://www.php-fig.org/psr/psr-1/
https://www.php-fig.org/psr/psr-2/
https://www.php-fig.org/psr/psr-3/
https://www.php-fig.org/psr/psr-4/
PSR-1:基本编码标准
标准的这一部分包括应被认为是确保共享PHP代码之间实现高水平技术互操作性所需的标准编码元素。
本文档中的关键字“必须”,“不得”,“必须”,“应”,“应禁止”,“应”,“不应”,“推荐”,“可以”和“可选”是按照RFC 2119中的描述进行解释。
1.概述
-
文件只能使用
<?php
和<?=
标记。 -
文件必须仅使用UTF-8,而不能将BOM用于PHP代码。
-
文件应该任一声明的符号(类,函数,常量等) 或引起副作用(例如生成输出,变化的.ini设置,等等),但是不应该这样做既。
-
类名必须在中声明
StudlyCaps
。 -
类常量必须在所有大写字母中使用下划线分隔符声明。
-
方法名称必须在中声明
camelCase
。 -
PSR-2:
2.PSR-2概述(最新版见psr12)
-
代码必须遵循“编码样式指南” PSR [ PSR-1 ]。
-
代码必须使用4个空格来缩进,不能使用制表符。
-
线长绝不能有硬性限制;软限制必须为120个字符;每行不得超过80个字符。
-
namespace
声明后必须有一个空白行,use
声明块后必须有一个空白行。 -
类的开括号必须在下一行,闭括号必须在正文之后的下一行。
-
方法的右括号必须在下一行,而右括号必须在正文之后的下一行。
-
必须在所有属性和方法上声明可见性;
abstract
并且final
必须在可见性之前声明;static
必须在可见性之后声明。 -
控制结构关键字必须在其后有一个空格;方法和函数调用绝不能。
-
控制结构的开括号必须在同一行上,闭括号必须在主体之后的下一行上。
-
控制结构的开括号必须在其后没有空格,控制结构的闭括号必须在其前没有空格。
2.PSR1详细说明
2.1。PHP标签
PHP代码必须使用long 标记或short-echo 标记;它绝对不能使用其他标签变体。<?php ?>
<?= ?>
2.2。字符编码
PHP代码必须仅使用没有BOM的UTF-8。
2.3。副作用
文件应该声明新的符号(类,函数,常量等),并且不会引起其他副作用,或者文件应该执行具有副作用的逻辑,但不能两者都做。
短语“副作用”表示仅通过包括文件就不与声明类,函数,常量等直接相关的逻辑的执行。
“副作用”包括但不限于:生成输出,显式使用require
或include
,连接到外部服务,修改ini设置,发出错误或异常,修改全局或静态变量,读取或写入文件等等。
以下是同时具有声明和副作用的文件示例;即,应避免的示例:
<?php
// side effect: change ini settings
ini_set('error_reporting', E_ALL);
// side effect: loads a file
include "file.php";
// side effect: generates output
echo "<html>\n";
// declaration
function foo()
{
// function body
}
以下示例是一个包含无副作用声明的文件。即,要模拟的示例:
<?php
// declaration
function foo()
{
// function body
}
// conditional declaration is *not* a side effect
if (! function_exists('bar')) {
function bar()
{
// function body
}
}
3.命名空间和类名
命名空间和类必须遵循“自动加载” PSR:[ PSR-0,PSR-4 ]。
这意味着每个类本身都在文件中,并且在至少一个级别的名称空间中:顶级供应商名称。
类名必须在中声明StudlyCaps
。
为PHP 5.3和之后编写的代码必须使用正式的名称空间。
例如:
<?php
// PHP 5.3 and later:
namespace Vendor\Model;
class Foo
{
}
为5.2.x和之前版本编写的代码应Vendor_
在类名上使用前缀的伪命名间隔约定。
<?php
// PHP 5.2.x and earlier:
class Vendor_Model_Foo
{
}
4.类常量,属性和方法
术语“类”是指所有类,接口和特征。
4.1。常数
类常量必须在所有大写字母中使用下划线分隔符声明。例如:
<?php
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}
4.2。物产
本指南有意避免关于使用任何建议 $StudlyCaps
,$camelCase
或$under_score
属性名称。
无论使用哪种命名约定,都应在合理范围内一致地应用。该范围可以是供应商级,程序包级,类级或方法级。
4.3。方法
方法名称必须在中声明camelCase()
。
PHP编码规范-PSR2
1.概述
-
代码必须遵循“编码样式指南” PSR [ PSR-1 ]。
-
代码必须使用4个空格来缩进,不能使用制表符。
-
线长绝不能有硬性限制;软限制必须为120个字符;每行不得超过80个字符。
-
namespace
声明后必须有一个空白行,use
声明块后必须有一个空白行。 -
类的开括号必须在下一行,闭括号必须在正文之后的下一行。
-
方法的右括号必须在下一行,而右括号必须在正文之后的下一行。
-
必须在所有属性和方法上声明可见性;
abstract
并且final
必须在可见性之前声明;static
必须在可见性之后声明。 -
控制结构关键字必须在其后有一个空格;方法和函数调用绝不能。
-
控制结构的开括号必须在同一行上,闭括号必须在主体之后的下一行上。
-
控制结构的开括号必须在其后没有空格,控制结构的闭括号必须在其前没有空格。