在PHP中,PSR(PHP Standard Recommendations)是由PHP-FIG(PHP Framework Interop Group)制定的编码标准和规范,旨在提高PHP代码的可读性和可维护性。PSR-2和PSR-4是两个不同的标准,它们分别关注代码风格和自动加载。
PSR-2
PSR-2 是关于代码风格的规范,它详细描述了PHP代码应该如何格式化,包括缩进、空格、换行、命名约定等。PSR-2 是 PSR-1 的扩展,它包含PSR-1中的所有规则,并添加了一些额外的规则。
PSR-2的一些主要规定包括:
- 缩进:使用4个空格进行缩进,不使用制表符(Tab)。
- 行宽:每行代码不应超过80个字符。
- 关键字:PHP的所有关键字(如
if,else,for,foreach,while,switch,case,default,function,class,trait,interface,extends,implements,public,protected,private,const,abstract,final,static,var,null,true,false,echo,print,require,include,require_once,include_once,global,unset,isset,empty,continue,goto,return,try,catch,throw,finally,instanceof,insteadof,trait_exists,class_exists,method_exists)必须使用小写字母。 - 命名约定:
- 类名必须使用大驼峰命名法(PascalCase)。
- 常量名必须使用全大写字母和下划线分隔(UPPER_CASE_WITH_UNDERSCORES)。
- 方法名和变量名必须使用小驼峰命名法(camelCase)。
- 括号:函数调用的括号周围不应有空格,控制结构(如
if,for)的括号内应有一个空格。
PSR-4
PSR-4 是关于自动加载的规范,它定义了从完全限定类名(FQCN)到文件路径的映射方式。PSR-4 允许自动加载器根据命名空间和类名找到相应的文件路径。
PSR-4的一些主要规定包括:
- 命名空间前缀:一个命名空间前缀必须指向一个基准目录。例如,命名空间前缀
Vendor\Package可能指向/path/to/vendor/package/src/。 - 目录结构:命名空间中的每个命名空间分隔符(
\)转换为目录分隔符(通常是/)。 - 类名:命名空间中的类名必须转换为以
.php结尾的文件名。类名的每个命名空间分隔符(\)转换为目录分隔符,并且首字母大写的类名部分转换为文件路径的一部分。 - 文件路径:最终的文件路径是通过将命名空间前缀的基准目录、转换后的目录结构和转换后的文件名拼接而成的。
例如,假设你有以下命名空间和类名:
namespace Vendor\Package\SubNamespace;
class MyClass
{
// ...
}
并且你的命名空间前缀 Vendor\Package 指向 /path/to/vendor/package/src/,那么PSR-4将自动加载器指向 /path/to/vendor/package/src/SubNamespace/MyClass.php。
总结
- PSR-2:关注PHP代码的风格和格式化,包括缩进、空格、命名约定等。
- PSR-4:关注自动加载,定义了从完全限定类名到文件路径的映射方式。
这两个标准分别解决了代码可读性和代码组织的问题,是现代PHP开发中推荐遵循的规范。
2004

被折叠的 条评论
为什么被折叠?



