《Modern PHP》PSR相关规范简述

作者: JONE 分类: PHPer 发布时间: 2018-09-12 11:02

PSR-1 基本代码风格

PHP标签
必须把php代码放在 或者 标签中.不得使用其他php标签语法.

编码
所有PHP文件都必须使用utf-8字符集编码,贰仟不能有字节顺序顺序标记(Byte Order Mkark, BOM).

目的
一个php文件可以定义符号(类 性状 函数 常量 等),或者执行有副作用的操作(例如生成货处理数据),但不能同时做这两件事.这是一个简单的要求.

自动加载
PHP命名空间和类必须遵守PSR-4自动加载器标准.

类的名称
PHP类的名称必须一直使用大驼峰式.这种格式也叫标题式.

常量的名称
PHP常量的名称必须全部使用大写字母.如果需要,可以使用下划线吧单词分开.

方法的名称
PHP方法的名称必须一直使用小驼峰式.也就是说芳芳名的首字母是小写,后续单词首字母大写.

PSR-2 严格的代码风格

贯彻PSR-1
使用PSR-2代码风格之前先要贯彻PSR-1代码风格.

缩进
这个话题分为两个阵营,第一个阵营选择使用制表符缩进,第二个阵营选择使用多个空格缩进.
PSR-2推荐规范要求PHP代码使用四个空格缩进.
经验建议使用空格缩进,因为空格缩进最可靠,在不同的代码编辑器中渲染的效果基本一致,而制表符的宽度各异,在不同的代码编辑器中渲染的效果也不同.为了得到最好的外观一致性,请使用四个空格缩进代码.

文件和代码行
PHP文件必须使用UNIX风格的换行符(LF),最后要有一个空行,而且不能使用PHP关闭标签?>.
每行代码不能超过80个字符,至少不能超过120个字符.
每行末尾不能有空格.
这些工作大多数代码编辑器都能帮助实现.

关键字
PSR-2推荐规范要求,PHP关键字都应该使用小写字母

命名空间
每个命名空间什么语句必须跟着一个空行.
类似的使用use关键字导入命名空间或者为命名空间创建别名时,在一系列use声明语句后要加一个空行.
namespace My\Componnet;
use Symfony\Componets\HttpFoundation\Request;
use Symfony\Componets\HttpFoundation\Response;

class App
{
//类的定义体
}

PSR-2推荐规范要求,类定义题的起始括号应该在雷鸣之后新起一行.
如果类扩展其他类或实现接口,extends和implements关键字必须和类目写在同一行
namespace My\App;

class Adminstrator extends User
{
// 类的定义体
}

方法
方法第一题的括号位置和类定义体的括号位置一样,方法定义体的起始括号要在方法名之后新起一行
要特别注意方法的参数,其实圆括号之后没有空格,结束圆括号之前也没有空格,每个参数(除了最后一个)后面有一个逗号和空格.
namespace Animals;

class StrawNeckedIbis
{
public function flapWings($number)fTimes = 3, $speed = ‘fasr’)
{
// 方法的定义体
}
}

可见性
类中的每个属性和方法都要声明可见性.可见性有public、protected或private指定,起作用是决定在类的内部或者外部如何访问属性和方法。
传统php开发者可能习惯在类的属性前加上var关键字,在使用方法的名称前加上下划线(_)。
别这么做,我们应该使用前面列出的可见性关键字。
如果把类的属性或者方法声明为abstract或者final,这两个限定符必须放在可见性关键字之前。
如果把属性或方法声明为static,这个限定符必须放在可见性关键字之后。
namespace Animals;

class StrawNeckedIbis
{
//指定了可见性的静态属性
public static ¥number0fBirds = 0;

//指定了可见性的方法
public function __construct()
{
static::$number0fBirds++;
}
}

控制结构
控制结构关键字包括:if、elseif、else、swich、case、do、while、for、foreach、try和catch。
如果控制结构关键字后面有一对圆括号,起始圆括号后面不能有空格,结束圆括号之前不能有空格。与类和方法的定义体不同,控制结构关键字后面起始括号应该和控制结构关键字写在同一行。控制结构关键字后面的结束括号必须单独写在一行。
do {
$gorilla->beatChest();
} while ($ibis->isAsleep() === true);

$ibis->flyAway();
}

建议: 我们可以自动实时PSR-1和PSR-2代码风格,很多代码编辑器都能根据PSR-1和PSR-2自动化代码。

PSR-3 日志记录器

PSR-3推荐规范的PHP日志记录器组件。

PSR-4 自动加载器

发表评论

电子邮件地址不会被公开。 必填项已用*标注