我过去常常在PHP中不需要大括号的时候省略大括号,随着程序控制流的复杂性不断增加,这导致代码难以理解和维护:
我的目标是自动将这个斑点变成这样:
if (condition) {
while (condition)
foreach (x in y) {
statement;
statement;
}
statement;
} elseif (condition)
return value;
else
die;
我知道这里有很多关于是否添加可选大括号的讨论,但我找不到如何方便地将它们添加到现有PHP代码中的答案。提前感谢!
if (condition)
{
while (condition)
{
foreach (x in y)
{
statement;
statement;
}
}
statement;
}
elseif (condition)
{
return value;
}
else
{
die;
}
您可以使用token_get_all来构建AST,在令牌上循环,并在中添加大括号。从中您应该能够保存回修改后的源文件。
还有一个非常好的PHPParser库。
我想出了一个简单的NetBeans编辑器宏,它可以可靠地完成任务,尽管只是半自动的:
caret-end-line " {" caret-down caret-end-line insert-break "}"
感谢您的投入!
您可以使用Fabien Potencier的PHP CS修复程序,然后只使用"大括号"修复程序,例如在中
php-cs-fixer fix <directory> --fixers braces