PHP编码规范:基本代码规范

本节标准包含了成为标准代码所需要的基本元素,以确保高级技术特性可以在PHP代码中共享。

RFC 2119中的特性关键词”必须”(MUST),“不可”(MUST NOT),“必要”(REQUIRED),“将会”(SHALL),“不会”(SHALL NOT),“应当”(SHOULD),“不应”(SHOULD NOT),“推荐”(RECOMMENDED),“可以”(MAY)和“可选”(OPTIONAL)在这文档中将被用来描述。

1. 大纲

  • 文件必须使用 <?php<?= 标签。

  • 文件必须使用不带BOM的UTF-8代码文件。

  • 文件应当声明符号(类,函数,常量等…)或者引起副作用(例如:生成输出,修改.ini配置等),但不能同时存在。

  • 命名空间和类名必须遵守 PSR-0

  • 类名必须使用骆驼式StudlyCaps写法 (译者注:驼峰式的一种变种,后文将直接用StudlyCaps表示)。

  • 类名常量必须使用全大写和下划线分隔符。

  • 方法名必须使用驼峰式cameCase写法(译者注:后文将直接用camelCase表示)。

2. 文件

2.1. PHP标签

PHP代码必须使用长标签<?php ?>或者短输出式<?= ?>标签;它不可使用其他的标签变种。

2.2. 字符编码

PHP代码必须只使用不带BOM的UTF-8。

2.3. 副作用

一个文件应当声明新符号 (类名,函数名,常量等)并且不产生副作用,或者应当执行有边缘影响的逻辑,但不能同时使用。

短语”副作用”意思是不直接执行逻辑的类,函数,常量等 仅包括文件

“副作用”包含但不局限于:生成输出,明确使用requireinclude,连接外部服务,修改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-0: http://www.zzphp.net/?p=278.

这意味着每个类只能是一个文件本身,并且至少有一个层级的命名空间:顶级的组织名称。

类名必须使用骆驼式StudlyCaps写法

代码必须使用PHP5.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. 类常量,属性和方法

术语“类”指所有的类,接口和特性(traits)

4.1. 常量

类常量必须使用全大写,分隔符使用下划线作为声明。 例子:

<?php
namespace Vendor\Model;

class Foo
{
    const VERSION = '1.0';
    const DATE_APPROVED = '2012-06-01';
}

4.2. 属性

本手册有意避免推荐使用$StulyCaps$cameCase或者unser_score作为属性名字

不管名称约定是不是在一个应当接受的合理范围。这个范围可能是组织,包,类,方法。

4.3. 方法

方法名必须用cameCase()写法

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>