psr-12是php-fig发布的、取代已废弃psr-2的最新代码风格标准,支持现代php特性并被主流工具默认采用;应使用php-cs-fixer或php_codesniffer等自动化工具检查修复;命名与结构需兼顾语义清晰、大小写一致及文件类名严格匹配;测试与cli代码同样须遵守规范。

PHP 代码规范在面试中常被用来考察候选人是否具备工程化思维和团队协作意识。重点不在于死记硬背某条规则,而在于能否理解规范背后的目的,并在实际开发中合理应用。
PSR-12 是什么?为什么它比 PSR-2 更常用?
PSR-12 是 PHP-FIG(PHP Framework Interop Group)发布的代码风格推荐标准,是对 PSR-2 的全面更新和扩展。它更细致地定义了缩进、空格、括号、换行、命名等细节,也明确支持现代 PHP 特性(如属性、构造函数属性提升、联合类型、箭头函数等)。
- PSR-2 已被标记为“废弃”,官方文档明确建议使用 PSR-12
- 主流工具(如 PHP_CodeSniffer、PHP-CS-Fixer)默认配置已转向 PSR-12
- 例如:PSR-12 允许在方法参数列表中对齐类型提示,而 PSR-2 不支持这种写法
如何快速检查和修复代码风格问题?
靠人工逐行核对效率低且易遗漏,应依赖自动化工具。最常用的是 PHP-CS-Fixer 和 PHP_CodeSniffer,两者可配合使用。
采用 php+mysql 数据库方式运行的强大网上商店系统,执行效率高速度快,支持多语言,模板和代码分离,轻松创建属于自己的个性化用户界面 v3.5更新: 1).进一步静态化了活动商品. 2).提供了一些重要UFT-8转换文件 3).修复了除了网银在线支付其它支付显示错误的问题. 4).修改了LOGO广告管理,增加LOGO链接后主页LOGO路径错误的问题 5).修改了公告无法发布的问题,可能是打压
-
PHP-CS-Fixer:侧重自动修复,运行
php-cs-fixer fix src/ --rules=@PSR12即可批量格式化 -
PHP_CodeSniffer:侧重检测与报告,搭配
phpcbf可自动修正,适合 CI 中做质量门禁 - 建议将 fix 命令加入 Composer 脚本:
"scripts": {"cs-fix": "php-cs-fixer fix --rules=@PSR12"}
命名和结构上有哪些容易被忽略但关键的规范?
除了大小写和下划线,真正影响可维护性的往往是语义清晰度和一致性。
立即学习“PHP免费学习笔记(深入)”;
- 类名用 PascalCase,接口加
Interface后缀(如UserRepositoryInterface),异常类以Exception结尾 - 方法名用 camelCase,动词开头(
findActiveUsers()),避免模糊命名(如getData()) - 一个文件只声明一个类(PSR-1),且类必须与文件名完全一致(包括大小写)
- use 语句按字母顺序分组排列,系统类在前,第三方在中,当前 vendor 在后
写测试或 CLI 脚本时,规范要求会降低吗?
不会。测试代码和脚本同样是项目代码的一部分,应遵循相同规范。尤其要注意:
- 测试类名需以
Test结尾,且与被测类同名(如UserTest对应User) - 测试方法用
test前缀或@test注解,命名体现行为(如testReturnsNullWhenUserNotFound()) - CLI 命令类应继承
Symfony\Component\Console\Command\Command,命令名用冒号分隔(user:sync)










