首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Modern PHP 学习笔记:关于 PSR 规范

由于 PSR 规范最初来源于一个社区组织 —— PHP-FIG,因此在介绍 PSR 规范之前,先介绍一下 PHP-FIG。

PHP-FIG(PHP Framework Interop Group),是框架代表自发组织的,其成立的目标都是为了改进 PHP 社区。PHP-FIG 制定了推荐规范,PHP 框架可以自愿遵循这些规范,改进与其他框架的通信和共享功能。

PSR(PHP Standards Recommendation,PHP 推荐标准),是 PHP-FIG 制定的推荐规范。目前 PHP-FIG 一共制定并发布了五个推荐规范,本文只介绍其中的四个推荐规范(其实是 PHP-FIG 废弃了第一份推荐规范 PSR-0)。

PSR-1:基本的代码风格

PSR-2:严格的代码风格

PSR-3:日志记录器接口

PSR-4:自动加载

PSR-1:基本的代码风格

PHP 标签:PHP 代码必须放在 或 标签中;

编码:所有 PHP 文件必须使用 UTF-8 字符集编码,且不存在 BOM;

目的:一个 PHP 文件可定义类、性状、函数等,或生成结果、处理数据,只能做其中一件事;

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

类的名称:必须一直使用驼峰式(如 CamelCase);

常量的名称:必须全部使用大写字母,可使用下划线把单词分开;

方法的名称:必须一直使用例如 camelCase 这种驼峰式。即方法名的首字母小写,后续单词的首字母大写。

PSR-2:严格的代码风格

贯彻 PSR-1 规范;

缩进:PSR-2 推荐规范要求 PHP 代码使用四个空格缩进,而非制表符缩进;

文件和代码行:必须使用 UNIX 风格的换行符(LF),最后要有一个空格,而且不能使用 PHP 关闭标签“?>”。每行代码最好不超过 80 个字符,至多不超过 120 个字符。每行末尾不应该有空格;

关键字:PSR-2 推荐规范要求,PHP 关键字应使用小写字母(如 true, false);

命名空间:每个命名空间声明与巨厚必须跟随一个空行。类似地,在一系列 use 声明语句后要加一个空行;如:

类:PSR-2 推荐规范要求,类定义体的起始花括号应在类名之后新起一行写;

方法:方法定义体的起始花括号要在方法名之后新起一行写;

可见性:类中的每个属性和方法都要声明可见性;

控制结构:所有控制结构关键字后面都要有一个空格。控制结构关键字后面的起始括号应和控制结构关键字写在同一行。控制结构关键字后面的结束括号必须单独写一行。如:

PSR-3:日志记录器接口

符合 PSR-3 推荐规范的 PHP 日志记录器组件,必须包含一个实现 Psr\Log\LoggerInterface 接口的 PHP 类。PSR-3 接口复用了 RFC5424 系统日志协议,规定要实现九个方法:

PSR-4:自动加载器

有了自动加载器,无需像前面使用 include() 或 require() 手动引入文件,自动加载器策略能找到 PHP 类、接口或性状,然后在运行时按需将载入 PHP 解释器。

PSR-4 自动加载器策略:

PSR-4 推荐规范不要求改变代码的实现方式,只建议如何使用文件系统目录结构和 PHP 命名空间组织代码,因此 PSR-4 自动加载器策略也是依赖 PHP 命名空间和文件系统目录结构查找并加载 PHP 类、接口和性状。

PSR-4 主要是把命名空间的前缀和文件系统中的目录对应起来。我们可以告诉 PHP,\laijingwu\Http 命名空间中的类、接口和性状在文件系统 src/ 目录下,这样 PHP 就能索引 \laijingwu\Http\Utilities 命名空间对应于 src/utilities 目录。而在 laravel 中,\App\Utilities\Sms 类则对应的是 app/utilities/Sms.php 文件。

尽管我们能够自行编写 PSR-4 自动加载器的代码,但我们完全没有必要这样做,因为我们可以直接使用依赖管理工具 Composer 自动生成的 PSR-4 自动加载器。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180313G0S9WA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券