php 8.1 本身不限制大括号风格,psr-12 要求 class、function、if 等结构左大括号换行,右大括号独占一行,须用 php-cs-fixer 自动修复并同步 ide 设置。

PHP 8.1 中大括号必须换行,不支持 K&R 风格
PHP 8.1 本身不提供“配置”大括号风格的开关——它没有像 ESLint 或 Prettier 那样的运行时格式化配置项。php -l 只校验语法,不检查缩进或换行。所谓“规范”,实际由编码标准(如 PSR-12)和工具链共同约束,不是 PHP 解释器行为。
PSR-12 要求类/方法/控制结构的大括号独占一行
PSR-12 是当前 PHP 社区最广泛采纳的格式规范,PHP 8.1 项目应默认遵循。它的核心要求很明确:所有 class、function、if、for、while、switch 等结构的左大括号 { 必须换行,且右大括号 } 单独成行,前面不能有空格。
-
if ($x) {❌ 不符合 PSR-12(K&R 风格) -
if ($x){✅ 符合(左括号换行) -
class User{✅ 类定义同理
注意:match 表达式是例外——它用冒号分隔分支,不使用大括号,所以不在此列。
用 php-cs-fixer 自动修复,别手调
手动维持换行易出错,尤其在团队协作中。推荐用 php-cs-fixer 做统一处理:
- 安装:
composer require --dev friendsofphp/php-cs-fixer - 配置
.php-cs-fixer.php文件,启用braces和control_structure_continuation_position规则 - 执行:
./vendor/bin/php-cs-fixer fix --rules=@PSR12 src/
这样能确保 foreach ($items as $item) 后面紧跟换行+{,而不是挤在一行。跳过这步,CI 流水线里跑 php-cs-fixer --dry-run 会直接报错失败。
IDE 设置要同步,否则编辑器自动补全会破坏规范
PhpStorm / VS Code 的 PHP 插件默认可能沿用旧习惯(比如 if 后自动补全 { 在同一行)。必须手动调整:
- PhpStorm:Settings → Editor → Code Style → PHP → Braces → 设置 “Class declaration”、“Function declaration”、“Control statements” 全部为 “Next line”
- VS Code:安装 PHP Intelephense 后,在 settings.json 中加
"intelephense.format.braces": "nextLine"
没调 IDE,写十行代码就可能有三行被自动改成 if ($x) { ——等你发现时,php-cs-fixer 已经要修满整个文件了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











