基本编码规范
此PHP标准包含了如何去编写高通用性代码中那些标准元素(class,function ,ect.)的正确姿势!
在RFC 2119文档中描述了关键字 “MUST”,“MUST NOT”,“SHALL”,“SHALL”,“SHALL NOT”,“SHOULD”,“SHOULD NOT”,“RECOMMENDED”,“MAY”,“OPTIONAL”。
1.总览
文件必须使用
<?php
和<?=
标签打头。文件编码必须使用UTF-8 无BOM头的格式。
文件可声明类,方法,常量,或者引发“副作用”(输出语句,改变PHP.ini的代码,etc.),但是不应该同时包含着两项。
命名空间需要遵循自动加载规范:PSR-0,PSR-4。
类名必须为StudlyCaps格式(首字母大写的驼峰式)。
常量必须要由大写字母组成,单词间使用下划线(_)连接。
方法必须要使用camelCase格式(首字母小的的驼峰式)
文件
2.1 PHP标签
PHP代码必须写在<?php ?>
或者简短声明<?=?>
(php.ini中short_open_tag为On的情况下,不推荐),不能使用其他标签。
2.2编码格式
PHP代码必须使用UTF-8无BOM头的格式保存。
2.3 副作用
一个文件可以声明类,方法,常量等,也可以执行那些"副作用"逻辑,但是不能同时做着两件事!
“副作用”这个词代表这个文件执行了跟此文件中声明的类,方法,常量没有直接联系的逻辑。
“副作用”包含:产生输出,直接使用require
和include
包含文件,连接外部服务,修改php.ini中的设置,引发错误或异常,修改全局或静态变量,读写文件等等。
下面这个例子就是一个文件同时包含声明和“副作用”
<?php
// 副作用:修改了php.ini的配置
ini_set('error_reporting', E_ALL);
// 副作用:引入文件
include "file.php";
// 副作用:产生输出
echo "<html>\n";
// declaration
function foo()
{
// function body
}
下面这个例子只包括声明,没有“副作用”
<?php
// declaration
function foo()
{
// function body
}
// 条件语句不是“副作用”
if (! function_exists('bar')) {
function bar()
{
// function body
}
}
命名空间和类名
命名空间和类命名必须遵循一项自动加载规范:PSR-0或PSR-4。
这表示一个文件只能有一个类,并且这个类只有有一层命名空间:顶层空间为开发商名
类名必须声明为StudlyCaps
(首字母大写的驼峰式)。
PHP5.3和之后的版本必须使用规范的命名空间。
例子:
<?php
// PHP 5.3 and later:
namespace Vendor\Model;
class Foo
{
}
PHP5.2.x 和之前的版本应该使用由Vendor_
+类名的形式声明类,作为虚拟命名空间。
<?php
// PHP 5.2.x and earlier:
class Vendor_Model_Foo
{
}
4 类常量,属性,方法
这里的类指 Classes,interfaces,traits。这三种类型都要遵守以下规范
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(小写字母打头的驼峰似)。
其他
注:本文非标准翻译
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。