基本编码标准
PHP 代码应该严格使用这部分标准
概述
- 文件必须只使用
<?php和<?=开始标签 - 文件必须只使用
不带 BOM 的 UTF-8编码 - 文件应该声明符号(类、函数、常量等) 或引起副作用(例如,生成输出、更改
.ini设置等) 但不应该两者都做 - 命名空间和类必须遵循
PSR-4自动加载 - 类名必须使用大写开头的驼峰命名规范(
StudlyCaps) - 类常量必须用大写字母声明,并使用下划线分隔符
- 方法名必须使用小写开头驼峰命名规范(
camelCase)
文件
1. 标签
PHP 代码必须使用长标签(<?php ?>)或短 echo 标签(<?= ?>)
2. 字符编码
PHP 代码 必须 且只可使用 不带 BOM 的 UTF-8 编码
3. 副作用
每个文件只做 1 类事:要嘛定义新的声明;要嘛就执行逻辑操作(副作用)
副作用
副作用 包括但不限于:
- 生成输出
- 显式的使用
require或include - 连接到外部服务
- 修改
ini设置 - 发出错误或异常
- 修改全局或静态变量
- 读取或写入文件
- 其它逻辑操作
php
<?php
// 「副作用」:修改 ini 配置
ini_set('error_reporting', E_ALL);
// 「副作用」:引入文件
include "file.php";
// 「副作用」:生成输出
echo "<html>\n";
// 声明函数
function foo()
{
// function body
}php
<?php
// 声明函数
function foo()
{
// 函数主体部分
}
// 条件声明 **不** 属于「副作用」
if (!function_exists('bar')) {
function bar()
{
// 函数主体部分
}
}命名空间和类名
命名空间和类名必须遵循 PSR-4 自动加载规范,即:
每个类都独立为一个文件,并且命名空间至少包含 1 层(顶级供应商),也就是说不能是根命名空间
类名必须以大写开头的驼峰命名方式声明(StudlyCaps)
名称空间层级
- 一层:如:
corethinkapp - 两层:如:
core\routethink\modelapp\controller - 三层:如:
app\test\controllerapp\admin\controller
php
<?php
// PHP 5.3 及更高版本:
namespace vendor\Model;
class Foo
{
}类成员
“类”在 PHP 中通常指所有的:类(class)、接口(interface)、特征(trait)
类有 3 种成员:类常量 类属性(类中的变量) 类方法(类中的函数)
类常量
类常量必须用大写字母声明,并使用下划线分隔符
php
<?php
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}类属性
类属性没有过多限制,可以 $StudlyCaps、$camelCase 或 $under_score,
需要确保在一定范围内使用统一的命名规则。
范围可以是:整个项目、单独的 composer 包、类级、方法级
这里包括 类属性和变量
类方法
类方法名必须使用首字母小写的驼峰法命名规则 camelCase()
这里包括 类方法和函数
