PSR规范制定了PHP代码的相关标准,以保证共享的PHP代码间可以有较高阅读性和技术互通性。
本文中会用到的几个规范等级:
等级 | 本文描述 |
---|---|
MUST,MUST NOT | 必须、绝不能 |
SHOULD、SHOULD NOT | 应该、不该 |
MAY、OPTIONAL | 可以,可选(本文出现较少) |
基础编码标准
1. 概览
- PHP代码文件必须使用<?php和<?=开头
- PHP必须使用不带BOM的UTF-8编码格式
- 一份PHP代码文件中应该要么只定义类、函数、常量等声明,要么就只写会产生副作用的操作(如输出和改变.ini文件中的配置),两者只能选其一
- 命名空间和类必须符合自动加载规范之一 PSR:[PSR-0, PSR-4]
- 类名必须以StudlyCaps驼峰命名规则
- 类中的常量必须使用大写,单词间用下划线分隔
- 方法名必须以camelCase驼峰命名
2.文件
- PHP代码必须使用长标签<?php ?>或者<?= ?>短标签,绝不能使用其他标签
- PHP必须且只能使用不带BOM的UTF-8编码格式
- 一份PHP代码文件中应该要么只定义类、函数、常量等声明,要么就只写会产生副作用的操作(如输出和改变.ini文件中的配置),两者只能选其一;
副作用表示:只通过引入的文件执行相关逻辑,不直接声明类、函数和常量等;
副作用包括但不仅限于:1)生成输出,如echo;2)引用外部文件require和include;3)修改ini文件配置;4)读取或者写入文件;5)修改全局或静态变量;6)连接外部服务
以下是反例:声明函数的同时执行了包含副作用的操作
<?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.命名空间和类
网友评论