执行 composer require --dev friendsofphp/php-cs-fixer 自动添加至 require-dev;创建 .php-cs-fixer.php 配置文件限定扫描 src/ 和 tests/ 目录。

composer.json 里怎么加 php-cs-fixer 作为 dev 依赖
直接运行命令就能装好,不用手动改 composer.json:
composer require --dev friendsofphp/php-cs-fixer这会自动写入
"friendsofphp/php-cs-fixer": "^3.55"(版本号随时间更新)到 require-dev 区块。注意别漏掉 --dev,否则它会进生产依赖,部署时可能被误删或触发不必要的 autoload。
怎么让 php-cs-fixer 检查时只扫 src/ 和 tests/ 目录
默认它会扫整个项目,包括 vendor/、var/、logs/,不仅慢还可能报错。必须显式限定路径或用配置排除干扰项:
在项目根目录建 .php-cs-fixer.php,内容如下:
setRiskyAllowed(true)
->setRules([
'@Symfony' => true,
'array_syntax' => ['syntax' => 'short'],
'no_unused_imports' => true,
])
->setFinder(
PhpCsFixer\Finder::create()
->in(['src', 'tests'])
->name('*.php')
->notName('*.blade.php') // Laravel 模板跳过
->ignoreVCSIgnored(true)
);
关键点:
• ->in(['src', 'tests']) 是白名单,比 ->exclude() 更可靠
• ->notName() 防止误处理模板文件
• ignoreVCSIgnored(true) 尊重 .gitignore,比如跳过 storage/framework/views/
怎么把代码风格检查变成 git commit 前自动执行
靠 composer scripts + husky 或纯 Git hook 都行,但最轻量的是用 Composer 自带的脚本机制 + Git 的 pre-commit hook:
1. 在 composer.json 的 "scripts" 下加一条:
"cs-check": "php-cs-fixer fix --dry-run --diff"
2. 然后在项目根目录建 .git/hooks/pre-commit(需可执行):
立即学习“PHP免费学习笔记(深入)”;
#!/bin/sh if ! composer cs-check; then echo "❌ PHP 代码风格不合规,请先运行:composer cs-fix" exit 1 fi
3. 再加个快捷修复命令方便本地调试:
"cs-fix": "php-cs-fixer fix --verbose"
注意:
• --dry-run --diff 只检查不改写,适合 CI 或 pre-commit
• --verbose 能看到具体哪些文件被改了,避免“静默修复”导致意外变更
• 不要用 php-cs-fixer --config=.php-cs-fixer.php 显式指定配置——只要配置文件名是默认的,它会自动加载
为什么 php-cs-fixer 有时不报错但实际没生效
常见原因有三个:
• composer install 后没生成 vendor/bin/php-cs-fixer 可执行文件(检查 vendor/bin/ 是否存在该文件,没有就删掉 vendor/ 重装)
• 配置文件名写成 .php_cs 或 php-cs-fixer.php(正确的是 .php-cs-fixer.php,开头带点)
• PHP 版本不匹配:php-cs-fixer v3 要求 PHP ≥ 8.0,如果用的是 PHP 7.4,得降级到 v2:composer require --dev friendsofphp/php-cs-fixer:^2.21,且配置写法不同(v2 用 PhpCsFixer\Config::create())











