什么是php的psr规范

发布时间:2022-04-18 23:53:31 阅读:1141次

一直听说过psr

那么究竟什么是psr规范

今天来了解一下

什么是PSR规范,从网上找了一个段

FIG组织在制定跟PHP相关规范,简称PSR。目前已有4个代码规范。

PSR-1基本代码规范

1) PHP代码文件必须以 <?php 或 <?= 标签开始;

2) PHP代码必须且只可使用不带BOM的UTF-8编码【推荐阅读:文件bom头问题呈现与解决 http://www.phpsong.com/134.html

3)一份PHP文件中应该要不就只定义新的声明,如类、函数或常量等不产生从属效应的操作,要不就只有会产生从属效应的逻辑操作,但不该同时具有两者

“从属效应”(side effects)一词的意思是,仅仅通过包含文件,不直接声明类、 函数和常量等,而执行的逻辑操作

4) 命名空间以及类必须符合 PSR 的自动加载规范:PSR-4,根据规范,每个类都独立为一个文件,且命名空间至少有一个层次:顶级的组织名称(vendor name)。

5) 类的命名必须 遵循 StudlyCaps 大写开头的驼峰命名规范。

6) 类中的常量所有字母都必须大写,单词间用下划线分隔

7) 方法名称必须符合 camelCase() 式的小写开头驼峰命名规范

PSR-2代码风格规范

1) 代码必须使用4个空格符而不是 tab键 进行缩进.【推荐设置:sublime tab替换成空格 http://www.phpsong.com/904.html

2) 每行的字符数应该软性保持在80个之内, 理论上一定不可多于120个, 但一定不能有硬性限制

3) 每个 namespace 命名空间声明语句和 use 声明语句块后面,必须插入一个空白行

4) 类的开始花括号({)必须写在其声明后自成一行,结束花括号(})也必须写在其主体后自成一行

5) 方法的开始花括号({)必须写在函数声明后自成一行,结束花括号(})也必须写在函数主体后自成一行

6) 类的属性和方法必须添加访问修饰符(private、protected 以及 public), abstract 以及 final 必须声明在访问修饰符之前,而 static 必须声明在访问修饰符之后

7) 控制结构(如if)的关键字后必须要有一个空格符,而调用方法或函数时则一定不能有

8) 控制结构(如if)的开始花括号({)必须写在声明的同一行,而结束花括号(})必须写在主体后自成一行

9) 控制结构的开始左括号后和结束右括号前,都一定不能有空格符

10) 闭包声明时,关键词 function 后以及关键词 use 的前后都必须要有一个空格.开始花括号必须写在声明的同一行,结束花括号必须紧跟主体结束的下一行.参数列表和变量列表的左括号后以及右括号前,必须不能有空格.参数和变量列表中,逗号前必须不能有空格,而逗号后必须要有空格.闭包中有默认值的参数必须放到列表的后面

PSR-3日志接口规范

https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-3-logger-interface-cn.md

PSR-4 Autoloader自动加载规范

1) 此处的“类”泛指所有的class类、接口、traits可复用代码块以及其它类似结构。

2)一个完整的类名需具有以下结构:

<命名空间>(<子命名空间>)*<类名>

完整的类名必须要有一个顶级命名空间,被称为 “vendor namespace”;

完整的类名可以有一个或多个子命名空间;

完整的类名必须有一个最终的类名;

完整的类名中任意一部分中的下划线都是没有特殊含义的;

完整的类名可以由任意大小写字母组成;

所有类名都必须是大小写敏感的。

3) 当根据完整的类名载入相应的文件……

完整的类名中,去掉最前面的命名空间分隔符,前面连续的一个或多个命名空间和子命名空间,作为“命名空间前缀”,其必须与至少一个“文件基目录”相对应;

紧接命名空间前缀后的子命名空间必须与相应的”文件基目录“相匹配,其中的命名空间分隔符将作为目录分隔符。

末尾的类名必须与对应的以 .php 为后缀的文件同名。

自动加载器(autoloader)的实现一定不能抛出异常、一定不能触发任一级别的错误信息以及不应该有返回值

PS.在composer.json文件中可以直接添加autoload字段实现命名空间到目录的映射。如默认app的映射

即命名空间“APP\”对应目录“app/”

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:什么是php的psr规范 出自老鄢博客 | 欢迎分享