使用include的PHP代码是否符合PSR-1与PSR-12编码规范?
PSR-1与PSR-12规范下
include引入类的合规性解答 首先明确:PSR-1和PSR-12并没有强制要求必须使用命名空间+自动加载替代include/require,你的第一种写法在规范层面是合规的,但有细节和最佳实践需要注意:
1. 对PSR-1规范的符合情况
PSR-1是基础编码规范,核心要求包括:
- 文件只包含合法的PHP代码(或必要声明)
- 类名采用大驼峰命名
- 一个文件仅声明一个类(或接口、trait)
你提供的第一段代码完全满足这些要求:
// A.php abstract class A {}
// B.php(与A.php同目录) include 'A.php'; class B extends A {}
PSR-1仅在使用命名空间时要求遵循PSR-4自动加载规范,但并没有强制所有代码必须使用命名空间。
2. 对PSR-12规范的符合情况
PSR-12是PSR-1的风格扩展,规范了代码的缩进、空格、换行等格式要求,同样没有禁止使用include/require。你第一段代码中的语句格式、类定义风格均符合PSR-12的要求。
3. 关于命名空间与自动加载的最佳实践
虽然规范不强制,但实际项目中推荐使用命名空间+自动加载(如Composer实现的PSR-4),原因包括:
- 避免手动管理文件引入的繁琐,减少重复加载或遗漏加载的问题
- 更清晰的代码结构,避免类名冲突
- 符合现代PHP项目的开发习惯
另外你提供的第二个示例存在一处小问题:使用use Classes\A;导入命名空间后,继承时无需写完整的命名空间路径,可简化为:
// B.php(与A.php同目录) namespace Classes\B; use Classes\A; class B extends A {}
内容的提问来源于stack exchange,提问作者coderboy
相关产品推荐
相关产品推荐

