【问题标题】:Closing parenthesis of a multi-line function call must be on a line by itself多行函数调用的右括号必须单独在一行
【发布时间】:2019-06-21 08:00:05
【问题描述】:

我从 phpcs 收到这条消息。我的代码是:

$userdata["expirydate"] = date("Y-m-d H:i:s", mktime(date("H"), date(
        "i"), date("s"), date("m"), date("d") - 1, date("y")));

【问题讨论】:

    标签: phpcs php-cs-fixer


    【解决方案1】:

    您的date("i") 函数调用跨越多行。发生这种情况时,该规则将强制右括号单独在一行中。

    如果您想遵守该规则,您可以通过多种方式重新格式化您的代码。

    您可以使用 PHPCS 差异报告来查看 PHPCS 希望您如何格式化它。在这种情况下,使用--report=diff 显示:

    --- temp.php
    +++ PHP_CodeSniffer
    @@ -1,3 +1,4 @@
     <?php
     $userdata["expirydate"] = date("Y-m-d H:i:s", mktime(date("H"), date(
    -    "i"), date("s"), date("m"), date("d") - 1, date("y")));
    +    "i"
    +), date("s"), date("m"), date("d") - 1, date("y")));
    

    这意味着 PHPCS 认为你能做的最小的改变就是这样写你的代码:

    $userdata["expirydate"] = date("Y-m-d H:i:s", mktime(date("H"), date(
        "i"
    ), date("s"), date("m"), date("d") - 1, date("y")));
    

    这是有效的,但不是很好。

    您可以将所有内容放在一条长线上,这仍然有效:

    $userdata["expirydate"] = date("Y-m-d H:i:s", mktime(date("H"), date("i"), date("s"), date("m"), date("d") - 1, date("y")));
    

    您可以拆分主要的 date() 调用以使其有效并缩短行长:

    $userdata["expirydate"] = date(
        "Y-m-d H:i:s",
        mktime(date("H"), date("i"), date("s"), date("m"), date("d") - 1, date("y"))
    );
    

    或者您甚至可以将每个参数都放在一个新行上:

    $userdata["expirydate"] = date(
        "Y-m-d H:i:s",
        mktime(
            date("H"),
            date("i"),
            date("s"),
            date("m"),
            date("d") - 1,
            date("y")
        )
    );
    

    这实际上取决于您认为哪个代码块更具可读性,以及哪个代码块最适合您现有的编码标准。

    【讨论】:

    • 感谢@Greg 的回答,我使用了一个长行代码,但它显示的内容类似于“phpcs:行超过 120 个字符;包含 164 个字符”,所以我更改了它。现在我把每一个论点放在一个新的线上,问题已经解决了。谢谢。
    • @Hemant 乐于助人。很高兴您找到了适合您的格式。
    猜你喜欢
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    相关资源
    最近更新 更多