什么是PSR?
PSR是PHP Standards Recommendation的简称,这个是php-fig组织制定的一套规范。至今,php-fig已经发布了五个规范:
- PSR-0:自动加载标准,2014-10-21该标准已经被废弃,使用PSR-4替代,不再细讲
- PSR-1:基本的编码风格
- PSR-2:编码风格(更严格)
- PSR-3:日志记录器接口
- PSR-4:自动加载
PSR-1
PHP标签:
PHP代码必须放在<?php ?>
标签或<?= ?>
标签中。
副作用:
一个PHP文件可以定义符号(比如类、函数、常量等),或者执行只有唯一副作用的操作(比如输出结果、处理数据等),但是不能同时做这两件事,尽量是一个PHP文件的功能单一。在操作的时候尽量把变量、类、函数的声明分开,通过include
或require
文件的方式来使用。
如下不符合规范:
<?php
// 改变设置
ini_set('error_reporting', E_ALL);
// 加载文件
include "file.php";
// 打印输出
echo "<html>\n";
// 声明
function foo()
{
// function body
}
符合规范如下:
<?php
// 声明
function foo()
{
// function body
}
// 条件判断
if (! function_exists('bar')) {
function bar()
{
// function body
}
}
命名空间和类:
命名空间和类必须遵循PSR-4自动加载器标准。
类的名称:
每个类都有自己的命名空间,且都在顶级命名空间下,类名必须使用驼峰式(CamelCase)。
PHP 5.3 及以上,必须使用正式的命名空间,例如:
<?php
// PHP 5.3 及以后
namespace Vendor\Model;
class Foo
{
}
PHP 5.3一下应该使用Vendor_
开头的伪命名空间约定,例如:
<?php
// PHP 5.3以下
class Vendor_Model_Foo
{
}
常量:
常量必须全部是用大写,并且使用下划线(_)分开。例如:
<?php
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}
类的方法:
类的方法必须使用小写字母开头的驼峰式(camelCase)命名。
PSR-2
PSR-2是对PSR-1的PHP的扩充。
贯彻PSR-1:
使用PSR-2代码标准之前要先贯彻PSR-1的代码标准。
文件和代码行:
PHP文件必须使用Unix风格的换行符(LF, linefeed),最后要有一个空行,仅包含PHP代码的文件而且不能使用PHP关闭标签?>
,每行代码不应该超过80个字符,每行末尾不能有空格,每行只能有一条语句,可以在适当的地方添加空行提高代码的阅读性。
不加上
?>
关闭标签,可以避免意料之外的输出错误