
php 8 引入的命名参数(named arguments)极大地提高了函数调用的可读性和灵活性。然而,在团队协作或大型项目中,如果不加以规范,命名参数的格式可能出现不一致,例如冒号后是否跟空格的问题。一个常见的非规范格式如下:
array_key_exists(
key:'test',
array:$array,
);这种格式虽然语法上合法,但在视觉上可能不如冒号后带一个空格的格式清晰。我们期望的标准格式是:
array_key_exists(
key: 'test',
array: $array,
);为了强制执行这种统一的风格,我们需要一个自动化工具来处理。
PHP CS Fixer 是一个强大的代码风格修复工具,它能够自动修复 PHP 代码中的各种风格问题。针对命名参数冒号后的空格问题,PHP CS Fixer 提供了 single_space_after_construct 规则。
single_space_after_construct 规则旨在确保在特定的语言构造后强制使用一个空格。值得注意的是,该规则包含一个名为 named_argument 的选项,并且此选项默认是启用的。这意味着,只要启用 single_space_after_construct 规则,它就会自动处理命名参数冒号后的空格问题。
立即学习“PHP免费学习笔记(深入)”;
要将 single_space_after_construct 规则集成到您的项目中,您需要配置项目的 .php-cs-fixer.dist.php(或 .php-cs-fixer.php)文件。
最简单且推荐的方式是直接将 single_space_after_construct 规则设置为 true。由于 named_argument 默认包含在该规则的处理范围中,因此无需额外配置。
<?php
$finder = (new PhpCsFixer\Finder())
->in(__DIR__) // 指定要扫描的目录
->exclude('vendor') // 排除不需要检查的目录
;
return (new PhpCsFixer\Config())
->setRules([
'@PSR12' => true, // 示例:可以结合其他规则集使用
'single_space_after_construct' => true, // 启用此规则,默认会处理命名参数
])
->setFinder($finder)
;如果您希望对 single_space_after_construct 规则的应用范围进行更精细的控制,例如只针对命名参数生效,或者与其他特定构造一起生效,您可以通过 constructs 选项来指定。
<?php
$finder = (new PhpCsFixer\Finder())
->in(__DIR__)
->exclude('vendor')
;
return (new PhpCsFixer\Config())
->setRules([
'@PSR12' => true,
'single_space_after_construct' => [
'constructs' => ['named_argument'], // 明确指定只应用于命名参数
],
// 如果需要同时处理其他构造,可以这样:
// 'single_space_after_construct' => [
// 'constructs' => ['yield_from', 'named_argument'],
// ],
])
->setFinder($finder)
;在大多数情况下,第一种方法('single_space_after_construct' => true)已足够,因为它包含了 named_argument 的处理。
配置好 .php-cs-fixer.dist.php 文件后,您可以通过命令行运行 PHP CS Fixer 来修复代码:
./vendor/bin/php-cs-fixer fix
或者,如果您只是想检查哪些文件不符合规范而不进行修复:
./vendor/bin/php-cs-fixer fix --dry-run --diff
运行修复命令后,原先不符合规范的代码:
array_key_exists(
key:'test',
array:$array,
);将被自动格式化为:
array_key_exists(
key: 'test',
array: $array,
);通过利用 PHP CS Fixer 的 single_space_after_construct 规则,我们可以轻松地自动化 PHP 8+ 命名参数中冒号后空格的格式化。这不仅提升了代码的可读性和一致性,也减轻了开发人员手动维护代码风格的负担,是现代 PHP 项目中不可或缺的工具。遵循本教程的指导,您可以有效地在您的项目中实施这一代码风格规范。
以上就是PHP CS Fixer 教程:强制命名参数冒号后单空格的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号