You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:23:08