PHP 规范

PHP FIG

PHP Framework Interop Group 简称 PHO FIG, 一个 PHP 框架的社群组织, 提供一些建议的 PHP 标准规范 PSR (PHP Standard Recommendations), 主要有四个部分, AUTOLOADING, INTERFACES, HTTP, CODING STYLES, 关於AUTOLOADING 有PSR-4, INTERFACES 有 PSR-3, PSR-6, PSR-11, PSR-13, PSR-14, PSR-16, 关於 HTTP 有 PSR-7, PSR-15, PSR-17, PSR-18, 关於 CODING STYLES 有 PSR-1, PSR-12, 文件相关的关键字 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL" 都按照 RFC 2119 解释.

  • 必须 (MUST): 绝对, 严格遵守
  • 一定不可以 (MUST NOT): 禁止, 严令禁止
  • 应该 (SHOULD): 强烈建议这样做, 但不强求
  • 不该 (SHOULD NOT): 强烈不建议这样做, 但不强求
  • 可以 (MAY), 可选 (OPTIONAL): 可选的

PSR-4: Autoloader

描述了一个从档案路径到 autoloading class 的规范, 完整的类名型式为

\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
// 1. 必须 (MUST) 有上层 namespace 名称, 也是一般所知的 vender namespace
// 2. 可以 (MAY) 有一个或多个的 SubNamespace
// 3. 必须 (MUST) 有一个最终类名
// 4. 底线符号在完整类名中没有任何特殊意义
// 5. 可以任意大小写字母组合
// 6. 所有类名引用必须 (MUST) 区分大小写 

加载档案与完整类名的对应关系

  1. 在完整类名中, 一个或多个前导 namespace 和 sub-namespace, 不包括前导 namespace 的分隔符, 至少对应一个根目录.
  2. 命名空间前缀後面的子命名空间与根目录下的目录名称必须 (MUST) 匹配, 其中命名空间分隔符为目录分隔符
  3. 最终类名对应到 .php 结尾的档案名称必须 (MUST) 一致, 如果最终类名为 Car, 类所在的档案名称必须是 Car.php
  4. 自动加载实作禁止 (MUST NOT) 抛出异常, 禁止 (MUST NOT) 出现任何级别错误, 不建议 (SHOULD NOT) 有返回值

PSR-1: Basic Coding Standard

基本代码规范

  • 档案必须 (MUST) 以 <?php 或 <?= 标签开始
  • 档案必须 (MUST) 使用不含 BOM 的 UTF-8
  • 档案应该 (SHOULD) 声明标示符, 如类, 函数, 或变数等, 或造成 side effect, 如产生输出, 更改设定等, 但不该 (SHOULD NOT) 有声明又造成 side effect
  • 命名空间以及类必须 (MUST) 符合 PSR-4
  • 类名必须 (MUST) 遵守 StudlyCaps 命名规则
  • 类中常数必须 (MUST) 大写字母命名并使用底线分隔
  • 方法命名必须 (MUST) 遵守 camelCase

<<:  Day 15 - Destructuring assignment

>>:  Day 01 - Shioaji API 开发环境安装

学习架构

从基础到进阶,逐步学习成为一个专业 iOS App 开发者 ...

AE极光制作2-Day8

接续昨天的练习:https://ithelp.ithome.com.tw/articles/1026...

[前端暴龙机,Vue2.x 进化 Vue3 ] Day2.在认识vue之前(二)

在认识 Vue 之前,前一篇已经介绍了资料驱动画面跟双向绑定的概念了 今天再介绍一个 MVVM架构~...

Day 21 - Robot Return to Origin

大家好,我是毛毛。ヾ(´∀ ˋ)ノ 废话不多说开始今天的解题Day~ 657. Robot Retu...

魔法实作 - todolist

前情提要 艾草:「もうだめだ。我已经没有梗了,不行了...」 「艾草,醒醒!我们不是说好要一起征服这...