badoo / phpcf
此包已被废弃,不再维护。未建议替代包。
格式化器是为了基本仅修改空白字符而创建的,例如换行符、制表符、空格等。
v1.1.0
2021-08-31 13:30 UTC
Requires
- php: ^7.0.17
Requires (Dev)
- phpunit/phpunit: ^8.4.3
This package is not auto-updated.
Last update: 2021-12-30 21:01:56 UTC
README
⚠️ 项目已被废弃。我们决定切换到 PHP_CodeSniffer,而不是为 PHP8+ 添加支持。⚠️
格式化器是为了基本仅修改空白字符而创建的,例如换行符、制表符、空格等。这意味着 phpcf 不会替代类似 PHP Code Sniffer (phpcs) 或 PHP Coding Standards Fixer (http://cs.sensiolabs.org) 的工具,后者由 Fabien Potencier 开发。该工具补充了其他工具,并执行所有与空白字符相关的“脏活”。值得注意的是,我们的工具尊重初始文件格式,并且仅更改不遵循所选规则集的空白字符(某些工具首先删除所有空白字符,并从头开始重建文件,这并不一定是人们想要的)。
我们的工具是可扩展的,支持任意样式集。您可以很容易地定义自己的格式化样式,以替换与 PSR 略有不同的大众化 Badoo 格式化标准。
下面是一个简单的使用示例。
- "phpcf apply " 格式化指定文件
- "phpcf check " 检查格式是否正确,如果文件格式不正确则返回非零退出码
$ cat minifier.php
<?php
$tokens=token_get_all(file_get_contents($argv[1]));$contents='';foreach($tokens as $tok){if($tok[0]===T_WHITESPACE||$tok[0]===T_COMMENT)continue;if($tok[0]===T_AS||$tok[0]===T_ELSE)$contents.=' '.$tok[1].' '; else $contents.=is_array($tok)?$tok[1]:$tok;}echo$contents."\n";
$ phpcf apply minifier.php
minifier.php formatted successfully
$ cat minifier.php
<?php
$tokens = token_get_all(file_get_contents($argv[1]));
$contents = '';
foreach ($tokens as $tok) {
if ($tok[0] === T_WHITESPACE || $tok[0] === T_COMMENT) continue;
if ($tok[0] === T_AS || $tok[0] === T_ELSE) $contents .= ' ' . $tok[1] . ' ';
else $contents .= is_array($tok) ? $tok[1] : $tok;
}
echo $contents . "\n";
$ phpcf check minifier.php; echo $?
minifier.php does not need formatting
0
我们的工具也能够格式化文件的一部分。要做到这一点,您需要在冒号后指定行号范围
$ cat zebra.php
<?php
echo "White "."strip".PHP_EOL;
echo "Black "."strip".PHP_EOL; // not formatted
echo "Arse".PHP_EOL;
$ phpcf apply zebra.php:1-2,4
zebra.php formatted successfully
$ cat zebra.php
<?php
echo "White " . "strip" . PHP_EOL;
echo "Black "."strip".PHP_EOL; // not formatted
echo "Arse" . PHP_EOL;
$ phpcf check zebra.php
zebra.php issues:
Expected one space before binary operators (= < > * . etc) on line 3 column 14
Expected one space after binary operators (= < > * . etc) on line 3 column 15
...
$ echo $?
1
再次值得注意的是,phpcf 是设计来仅更改空白字符,并执行诸如
- 将 "<?" 替换为 "<?php"
- 删除文件末尾的额外关闭标签
- 将函数名中的西里尔字母更改为英文
- 使用空格手动对齐的表达式不受影响
格式化器作为一个有限状态机工作,其规则由用户设置,而不是使用硬编码的替换。我们提供遵循 Badoo 格式规则的默认配置。因此,如果您想自动将 "var" 替换为 "public" 或类似操作,我们建议查看 PHP-CS-Fixer。后者不会真正修改空白字符,但它可以进行比我们的工具更复杂的替换。