PHP推荐标准

PHP社区已从中心化的框架进化为分布式生态系统,分布式生态系统中组件效率高、互操作性好、作用单一。

PHP-FIG

PHP-FIG(PHP Framework Interop Group)由一些PHP框架代表组成,聚在一起“讨论项目之间的共性,寻找可以合作的方式”。他们的使命是实现框架的互操作性,通过接口、自动加载机制、标准风格,让框架相互合作。

PSR

PSR(PHP Standards Recommendation)是PHP推荐标准的简称,由PHP-FIG制定。规范名称以PSR-开头,后跟数字。PHP-FIG发布的推荐规范

  • PSR-1 基本的代码风格
  • PSR-2 严格的代理风格
  • PSR-3 日志记录器接口
  • PSR-4 自动加载

PSR-1 基本的代码风格

编写符合社区标准的PHP代码,必须满足以下要求

  • PHP 标签
    必须将PHP代码放在标签中,不得使用其他PHP标签句法。
  • 编码
    所有PHP文件必须使用 UTF-8 字符集编码,不能有字节顺序标记(BOM,Byte Order Mark)。
  • 目的
    一个PHP文件可定义符号,或执行有副作用的操作,但不能同时做这两件事。
  • 自动加载
    PHP命名空间和类必须遵守PSR-4自动加载标准,仅需为PHP符号选择合适的名称,并把定义符号的文件放在预期的位置。
  • 类的名称
    PHP类的名称必须采用大驼峰法(CamelCase),又叫标题式(TitleCase)。
  • 常量命名
    PHP常量的名称必须全部大写字母,若需要使用下划线分割单词。
  • 方法命名
    PHP方法名称必须使用小驼峰(camelCase)。

PSR-2 严格的代码风格

  • 贯彻PSR-1
    使用PSR-2代码风格钱必须贯彻PSR-1代码风格。
  • 缩进
    PHP代码使用4个空格缩进而非制表符缩进。
  • 文件和代码行
    PHP代码必须使用UNIX分割的换行符(LF),最后要有一个空行,而且不能使用PHP关闭标签 ?>
    每行代码不能超过80个字符,至少不能超过120个字符。
    每行末尾不能有空格。
  • 关键字
    PHP关键字必须使用小写字母
  • 命名空间
    每个命名空间声明语句后必须跟着一个空行

  • 类定义体的起始括号应该在类名之后新起一行写。
    类扩展或实现接口,extendsimplements关键字必须和类名写在同一行。
  • 方法
    方法定义体的起始括号要在方法名之后新起一行写,结束扩展要在方法定义体之后新起一行写。
    方法的参数起始圆括号之后没有空格,结束圆括号之前也没有空格。
    方法的每个参数,除最后一个后有一个逗号和空格。
  • 可见性
    类中的属性和方法均要声明可见性,可见性由publicprivateprotected指定,其作用是决定在类的内部和外部如何访问属性和方法。
  • 控制结构
    所有控制结构关键字后都要有一个空格,若控制结构关键字后有一对圆括号,起始圆括号后面不能有空格,结束圆括号之前不能有空格。
    与类和方法的定义体不同,控制结构关键字后面的起始括号应该和控制结构关键字写在同一行。
    控制结构关键字后面的结束括号必须单独写在一行。

PSR-3 日志记录器

推荐 monolog/monolog 组件( https://packagist.org/packages/monolog/monolog)。

Monolog 组件完全实现 PSR-3 接口,自定义消息格式化和处理程序扩展。

  • 可将消息写入文本、系统日志、数据库
  • 邮件发送
  • 支持 HipChat、Slack、网络服务器和远程API
pushHandler(new StreamHandler('logs/development.log'), Logger::DEBUG);
$log->pushHandler(new StreamHandler('logs/production'), Logger::WARNING);

// 使用日志记录器
$log->debug('This is a development debug message');
$log->warning('This is a production warning message');

PSR-4 自动加载器

自动加载器策略指在运行时按需查找PHP类、接口、形状,并将其载入PHP解释器。

符合此规范的组件包括:Symfony、Doctrine、Monolog、Twig、Guzzle、SwiftMailer、PHPUnit、Carbon...

PSR-4策略用于在运行时查找并加载PHP类、接口、形状,它不要求改变代码的实现方式,只建议如何使用文件系统目录结构和PHP命名空间组织代码。

PSR-4自动加载器策略依赖PHP命名空间和文件系统目录结构查找并加载PHP类、接口、形状。

PSR-4 精髓是把命名空间的前缀和文件系统中的目录对应起来,命名空间前缀可是顶层命名空间,也可是顶层命名空间加上任意子命名空间,相当灵活。

PSR-4 自动加载实现代码

你可能感兴趣的:(PHP推荐标准)