PHP中psr2和psr4的区别
PHP中psr2和psr4的区别
在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的一些主要规定包括:
1. 缩进:
使用4个空格进行缩进,不使用制表符(Tab)。
2. 行宽:
每行代码不应超过80个字符。
3. 关键字:
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)必须使用小写字母。
4. 命名约定:
-
类名必须使用大驼峰命名法(PascalCase)。
-
常量名必须使用全大写字母和下划线分隔(UPPER_CASE_WITH_UNDERSCORES)。
-
方法名和变量名必须使用小驼峰命名法(camelCase)。
5. 括号:
函数调用的括号周围不应有空格,控制结构(如 if, for)的括号内应有一个空格。
PSR-4
PSR-4 是关于自动加载的规范,它定义了从完全限定类名(FQCN)到文件路径的映射方式。PSR-4 允许自动加载器根据命名空间和类名找到相应的文件路径。
PSR-4的一些主要规定包括:
1. 命名空间前缀:
一个命名空间前缀必须指向一个基准目录。例如,命名空间前缀 Vendor\Package 可能指向 /path/to/vendor/package/src/。
2. 目录结构:
命名空间中的每个命名空间分隔符(\)转换为目录分隔符(通常是 /)。
3. 类名:
命名空间中的类名必须转换为以 .php 结尾的文件名。类名的每个命名空间分隔符(\)转换为目录分隔符,并且首字母大写的类名部分转换为文件路径的一部分。
4. 文件路径:
最终的文件路径是通过将命名空间前缀的基准目录、转换后的目录结构和转换后的文件名拼接而成的。
例如,假设你有以下命名空间和类名:
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开发中推荐遵循的规范。
PSR-2与PSR-4核心区别解析
1952

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



