0

我过去常常在不需要时在 PHP 中省略花括号,这 - 随着我的程序控制流的复杂性越来越高 - 导致代码难以理解且无法维护:

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

4

3 回答 3

1

您可以使用token_get_all构建一个 AST,遍历令牌,然后添加大括号。从中您应该能够保存修改后的源文件。

还有优秀的PHP_Parser 库

于 2013-12-12T11:00:25.793 回答
0

我想出了一个简单的 NetBeans 编辑器宏,它可以可靠地完成这项工作,尽管只是半自动的:

caret-end-line " {" caret-down caret-end-line insert-break "}"

感谢您的输入!

于 2013-12-17T13:19:02.453 回答
0

您可以使用 Fabien Potencier 的PHP-CS-Fixer,然后只使用“大括号”修复程序,例如

php-cs-fixer fix <directory> --fixers braces

于 2015-11-25T10:59:08.720 回答