多行函数调用的右括号必须单独占一行

Closing parenthesis of a multi-line function call must be on a line by itself

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

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

您的 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")
    )
);

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