一、能愿动词
MUST 必须
MUST NOT 一定不能
SHOULD 应该
SHOULD NOT 不应该
二、概览
- 文件必须(MUST)只用
<?php
或者<?=
标签。 - php代码必须使用
UTF-8 without BOM
编码。 - 文件
应该
只用于声明符号(symbols
),例如类,方法,常量等,或者只用来做有边际影响的事(side-effects
),例如创建输出,修改配置文件等,但是不应该
同时做这两件事。 - 命名空间和类
必须
遵循一个“自动加载”规范:[PSR-0, PSR-4]。 - 类名称
必须
声明为StudlyCaps
的形式,即名称中每个单词首字母大写。 - 类常量
必须
只使用大写字母,用下划线来做单词间隔离。 - 方法名称
必须
声明为camelCase
的形式。
三、文件
php标签
php代码必须
使用<?php ?>
标签或者短输出标签<?= ?>
;一定不能
使用其他类型的标签。
字符编码
php代码必须使用UTF-8 without BOM
编码。
边际影响
一个文件应该
用来定义新符号(类, 方法, 常量等)并且不会带来边际影响
,或者它应该
执行可能带来边际影响
的逻辑代码,但是不应该
同时做这两件事。
边际影响
意思是业务代码的执行不会直接涉及到声明类,方法,常量等,而是仅仅来自包含文件。
边际影响
包含但是不限于:创建输出,明确的使用require
或者include
,连接外部服务修改配置文件,抛出错误或者异常,修改全局或者静态变量,从文件读取或者写入文件等等。
下面是一个同时包含声明和边际影响的例子;
换句话说,一个应该避免的例子:
<?php
// 边际影响:修改配置文件
ini_set('error_reporting', E_ALL);
// 边际影响:加载文件
include "file.php";
// 边际影响:创建输出
echo "<html>\n";
// 声明
function foo()
{
// function body
}
下面是一个包含声明但是没有边际影响的例子;也就是说,一个应该被效仿的例子:
<?php
// 声明
function foo()
{
// function body
}
// 条件控制声明不是一个边际影响
if (! function_exists('bar')) {
function bar()
{
// function body
}
}
四、命名空间和类名称
命名空间和类必须
遵循一个“自动加载”规范:[PSR-0, PSR-4]。
这意味着每一个类在一个单独的文件中,并且在至少一个层级的命名空间中:一个顶级的包名称。
类名称必须声明为StudlyCaps
的形式。
php5.3以及以后版本的代码必须
使用正式的命名空间。
例如:
<?php
// php 5.3版本以后
namespace Vendor\Model;
class Foo
{
}
php5.2.x及以前的版本应该使用虚拟命名空间惯例,将Vendor_
前缀添加到类名称前。
<?php
// PHP 5.2.x and earlier:
class Vendor_Model_Foo
{
}
五、类常量,属性和类方法
术语“类”指所有类,接口和trait
常量
类常量必须
使用大写字母定义,使用下划线来分隔单词。
例如:
<?php
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}
属性
这个指导将回避使用$StudlyCaps
,$camelCase
,还是$under_score
属性命名的争论。
无论使用任何命名习惯,在一个合理的范围应该被保持一致。这个合理的范围可能是vendor级别,包级别,类级别或者方法级别。
方法
方法名称应该声明为camelCase()
的形式。
原文地址: psr-1基本编码规范
网友评论