是否有自动修复PHP中的一行ifs的方法?

时间:2012-01-11 19:20:28

标签: php code-cleanup

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

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

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

我想看看

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

我想我可以支持我的偏好,认为第一个更容易出错,而且可读性较差。

我现在的问题是我正在处理一个包含这一行ifs的代码,我想知道是否有某种实用程序可以帮助我纠正这些ifs,某种PHP代码美化了会这样做。

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

您怎么看?

1 个答案:

答案 0 :(得分:1)

您最好的选择可能是使用内置的PHP tokenizer,并解析生成的令牌流。

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

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

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