php项目中用git pre-commit钩子结合php-cs-fixer实现提交前自动格式化,通过composer安装、配置规则、封装命令并接入钩子,确保代码风格统一且全员生效。

在 PHP 项目中用 Git 钩子结合 php-cs-fixer 实现提交前自动格式化,核心是让 pre-commit 钩子调用修复命令,确保每次提交的代码都符合团队规范。这不需要所有人手动执行,也不依赖编辑器设置,真正做到了“一次配置,全员生效”。
安装与基础配置
先将 php-cs-fixer 作为开发依赖安装到项目中:
composer require --dev friendsofphp/php-cs-fixer
接着在项目根目录创建配置文件 .php-cs-fixer.dist.php(推荐用 .dist 后缀,便于区分本地覆盖):
- 明确指定扫描范围,比如只处理
src/和app/目录,跳过vendor、tests/fixtures等无关路径 - 规则建议从
@PSR12开始,再按需启用ordered_imports、trailing_comma_in_multiline等高频实用项 - 配置中使用
Finder::create()构建路径筛选逻辑,避免误扫或漏扫
通过 Composer Scripts 封装命令
在 composer.json 的 scripts 区块里定义清晰易记的命令:
-
"format": "php-cs-fixer fix --verbose"—— 用于手动快速修复 -
"check-style": "php-cs-fixer fix --dry-run --diff"—— 用于 CI 检查或预提交验证
这样开发者随时可运行 composer format 手动整理,也方便后续钩子调用。
接入 pre-commit 钩子(推荐 Husky 或纯 Git 方式)
有两类主流接入方式,选其一即可:
- 若项目已用 Husky(尤其搭配前端工具链),执行:
npx husky add .husky/pre-commit "composer check-style || (composer format && git add .)"
该命令先检查,不通过则自动修复并重新暂存,再允许提交 - 若倾向轻量方案,直接编辑
.git/hooks/pre-commit文件(需 chmod +x):
写入 shell 脚本,调用composer check-style;失败时输出提示并exit 1中断提交
注意:钩子脚本里不要硬编码 vendor/bin/php-cs-fixer 绝对路径,优先走 composer run,更兼容不同环境。
团队协同与持续集成衔接
仅本地钩子还不够,要形成闭环:
- 把
.php-cs-fixer.dist.php和composer.json中的 scripts 提交进仓库,确保所有成员拉取即用 - CI 流程(如 GitHub Actions)中加入
composer check-style步骤,作为 PR 合并的准入条件 - 可选加一层保护:在
pre-push钩子中也跑一次check-style,防止本地绕过 pre-commit 提交
这样从开发、提交到合并,每个环节都有风格兜底,不再因空格、括号换行等细节反复返工。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











