PHP 8.1 环境下配置 PHP-CS-Fixer 的核心是安装、规则适配和启用 PHP 8+ 特有语法支持:需以 dev 依赖安装,创建 .php-cs-fixer.dist.php 并声明 strict_types,启用 @PSR12 和 @PHP81 规则集,显式配置 single_space_after_construct、union_operator_spaces、nullsafe_operator_spaces 等规则,排除 vendor 等非源码目录,并通过 --dry-run 验证生效。

PHP 8.1 环境下配置 PHP-CS-Fixer,核心是安装、规则适配和启用 PHP 8+ 特有语法支持。它不是简单套用旧配置,而是要确保规则兼容新特性(如命名参数、联合类型、空安全操作符等),避免报错或漏修复。
安装与基础配置
推荐以开发依赖方式安装,保证项目级一致性:
- 运行
composer require --dev friendsofphp/php-cs-fixer,安装后命令路径为vendor/bin/php-cs-fixer - 在项目根目录创建
.php-cs-fixer.dist.php(优先级高于.php-cs-fixer.php) - 文件开头必须包含
declare(strict_types=1);,这是 PHP 8.1 项目常见实践,也符合 PSR-12 要求
启用 PHP 8.1 兼容规则集
直接使用 @PSR12 是基础,但需叠加对 PHP 8+ 语法的显式支持:
- 添加
'@PHP80' => true或'@PHP81' => true(PHP-CS-Fixer v3.15+ 支持@PHP81规则集) - 关键规则建议启用:
'single_space_after_construct' => ['constructs' => ['named_argument']]—— 修复func(param: 'value')中冒号后空格'union_operator_spaces' => true—— 规范联合类型中的空格,如string|int'nullsafe_operator_spaces' => true—— 处理?->操作符两侧空格 - 禁用不兼容旧规则,例如
'php_unit_dedicated_annotation' => false(PHP 8.1+ 属性替代注解后已过时)
限定扫描范围与排除干扰
PHP 8.1 项目常含现代结构(如 Attributes、enum、readonly),需精准定位源码:
立即学习“PHP免费学习笔记(深入)”;
- 用
Finder明确包含src/、app/、config/等业务目录,排除vendor/、storage/、bootstrap/cache/ - 过滤文件类型:
->name('*.php'),并排除模板类文件(如->notName('*.blade.php')或->notName('*.phtml')) - 若项目使用 PHP Attributes,确保不被误排除:
->ignoreDotFiles(false)(某些 Attributes 写在 .php 文件中)
验证与日常使用
配置完成后,务必测试是否真正生效:
- 检查模式(不修改):
./vendor/bin/php-cs-fixer fix --dry-run --diff,看是否识别出命名参数、联合类型等格式问题 - 修复全部:
./vendor/bin/php-cs-fixer fix,首次运行建议加--verbose查看处理了哪些文件和规则 - CI 流程中建议加
--using-cache=no避免缓存导致漏检,尤其在 GitHub Actions 中



















