1、概述
- 文件必须只允许使用
<?php
或者<?=
标签。 - 文件必须只允许使用UTF-8编码,并且去除BOM头。
- 文件应当或者声明符号(类,函数,常量等),或者引起副作用(例如:生成输出,修改.ini设置等),但是不应当同时出现。
- 命名空间和类必须紧跟“自动加载”标准:[PSR-0, PSR-4]。
- 类名必须声明类似于
StudyCaps
。 - 类中的常量必须全部由大写字母和下划线组成。
- 方法名必须声明类似于
camelCase
。
2、文件
- 2.1 PHP标签
PHP代码必须使用长标签<?php ?>
或者输出-短标签<?= ?>
。不能使用其他变异标签。
- 2.2、编码
PHP代码必须仅允许使用去除BOM的UTF-8编码。
- 2.3、副作用(冲突)
包括但不限于以下形式:生成输出,直接使用 require 或者 include ,连接外部服务,修改ini配置,产生错误或者异常,修改全局或静态变量,直接读写文件等等。
以下是一个双重定义的副作用实例:
<?php
// side effect: 修改ini配置
ini_set('error_reporting', E_ALL);
// side effect: 加载一个文件
include "file.php";
// side effect: 直接输出
echo "<html>\n";
// 定义
function foo()
{
// 函数体
}
以下是一个正确的定义方式:
<?php
// 定义
function foo()
{
// function body
}
// 条件式定义
if (! function_exists('bar')) {
function bar()
{
// function body
}
}
3、命名空间和类名
命名空间和类都必须紧随“自动加载”PSR:[PSR-0, PSR-4]
这就意味着,每个类都必须定义在一个独立的文件中,并且命名空间至少一个层级:顶级名称。
类名必须以该种形式:StudyCaps
。
PHP 5.3 以上的版本必须使用正式的命名空间。例如:
<?php
// PHP 5.3 and later:
namespace Vendor\Model;
class Foo
{
}
PHP 5.2.* 或者之前的版本,应当使用伪命名空间惯例,类名需要以 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、属性
形如:$StudyCaps
$camelCase
$under_score
- 4.3、方法
方法名必须定义为:camelCase()