本标准包含了 对 用于保障 PHP共享代码的互操作性 的标准编码元素。
The key words “MUST 必须”, “MUST NOT 必须不”, “REQUIRED 需要”, “SHALL 将要”, “SHALL NOT 将不”, “SHOULD 应该”, “SHOULD NOT不应该”, “RECOMMENDED 推荐的”, “MAY 可以”, and “OPTIONAL 可选的” in this document are to be interpreted as described in RFC 2119.
概览PHP 代码必须使用长标签 或 echo短标签 ; 必须不能使用其他形态的标签.
PHP代码必须使用无BOM头UTF-8编码
一个文件 (应该)要么声明符号(类、函数和常量等),不能引起任何边际效应;要么执行产生边际效应的代码。这两种情况不能出现在一个文件中。
“边际效应” 执行与声明类、函数、常量无关的逻辑。
“边际效应” 包括但不限于: 生成输出, 显式的require或include, 连接外部服务, 修改ini配置, 发出 errors 或 exceptions, 修改全局或静态变量, 读写文件 等等.
以下是一个即声明符号,又产生边际效应的例子; 这是应该要避免的情况:
<?php// 边际效应: 修改 ini 设置ini_set('error_reporting', E_ALL);// 边际效应: 加载文件include "file.php";// 边际效应: 生成输出echo "<html>\n";// 声明function foo() { // function body}
以下例子只包含声明,无边际效应;值得效仿:
<?php// declarationfunction foo() { // function body}// 条件式声明 不是边际效应if (! function_exists('bar')) { function bar() { // function body }}
命名空间名和类名必须遵循 “autoloading” PSR: [PSR-0, PSR-4].
这意味着每个文件只能包含一个类, 并且至少有一层命名空间: 顶级的 vendor 名.
类名必须使用 StudlyCaps (首字母大写驼峰) 声明.
针对 PHP 5.3 及以后版本的代码,必须使用正式的命名空间(5.3之前PHP不支持namespace).
例如:
<?php// PHP 5.3 and later:namespace Vendor\Model;class Foo {}Code written for 5.2.x and before SHOULD use the pseudo-namespacing convention of Vendor_prefixes on class names.<?php// PHP 5.2.x and earlier:class Vendor_Model_Foo{}
这里的“类”包括 classes, interfaces 和 traits.
4.1. 常量
类常量必须使用下划线分割的大写声明。
<?phpnamespace Vendor\Model;class Foo { const VERSION = '1.0'; const DATE_APPROVED = '2012-06-01';}
本指南特意避免偏向 StudlyCaps, camelCase 和 $under_score 中任意一种属性命名风格.
无论在用哪种命名风格,在合理的范围内均应改保持一致。 范围可以使 vendor-level, package-level, class-level, 或 method-level。
方法名必须使用驼峰 camelCase().