PHP:为现有代码中的控制结构添加可选的大括号


PHP: Add optional curly braces to control structures in existing code

我过去常常在PHP中不需要大括号的时候省略大括号,随着程序控制流的复杂性不断增加,这导致代码难以理解和维护:

    if (condition) {
        while (condition)
            foreach (x in y) {
               statement;
               statement;
            }
        statement;
    } elseif (condition)
        return value;
    else
        die;
我的目标是自动将这个斑点变成这样:
    if (condition)
    {
        while (condition)
        {
            foreach (x in y)
            {
               statement;
               statement;
            }
        }
        statement;
    }
    elseif (condition)
    {
        return value;
    }
    else
    {
        die;
    }
我知道这里有很多关于是否添加可选大括号的讨论,但我找不到如何方便地将它们添加到现有PHP代码中的答案。提前感谢!

您可以使用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