1

我不知道是不是只有我,但我对任何类似 c 语言的一行 ifs 过敏,我总是喜欢在 if 之后看到大括号,所以而不是

if($a==1)
  $b = 2;

或者

if($a==1) $b = 2;

我倒要看看

if($a==1){
   $b = 2; 
}

我想我可以通过争辩第一个更容易出错并且可读性较低来支持我的偏好。

我现在的问题是我正在编写包含这些 ifs 的代码,我想知道是否有某种实用程序可以帮助我纠正这些 ifs,某种 php 代码美化器可以做到这一点.

我也在考虑开发某种可以与 linux 的 sed 命令一起使用的正则表达式来实现这一点,但我不确定这是否可能,因为正则表达式应该匹配一行 ifs,并用花括号括起来,所以逻辑是找到一个 if 和条件语句,然后在条件之后查找 {,如果没有找到则换行下一行,或者换行之前的下一组字符,然后用 { 和 } 换行

你怎么看?

4

1 回答 1

1

您最好的选择可能是使用内置的 PHP 标记器,并解析生成的标记流。

有关 PHP Tokenizer 的更多信息,请参阅此答案:https ://stackoverflow.com/a/5642653/1005039

您还可以查看我为解析 PHP 源文件而编写的脚本,以修复遗留代码中的另一个常见问题,即修复未引用的数组索引: https ://github.com/GustavBertram/php-array-index-fixer/ blob/master/aif.php

该脚本使用状态机而不是通用解析器,但在您的情况下它可能已经足够好了。

于 2012-11-22T10:38:46.210 回答