gpt4 book ai didi

php - PHP 是否允许命名参数,以便可以在函数调用中省略可选参数?

转载 作者:行者123 更新时间:2023-12-02 21:02:59 29 4
gpt4 key购买 nike

PHP 中是否可以在调用函数/方法时指定命名可选参数,跳过您不想指定的参数(就像在 python 中一样)?

类似于:

function foo($a, $b = '', $c = '') {
// whatever
}


foo("hello", $c="bar"); // we want $b as the default, but specify $c

最佳答案

PHP 8.0 添加了对命名参数的支持,接受 an RFC .

Named arguments are passed by prefixing the value with the parameter name followed by a colon. Using reserved keywords as parameter names is allowed. The parameter name must be an identifier, specifying dynamically is not allowed.

例如在示例中仅传递第三个可选参数:

foo(timeout: 3);

在 PHP 8 之前,PHP 中无法使用命名参数。从技术上讲,当您调用 foo($timeout=3) 时,它首先评估 $timeout=3,结果为 3 并将其传递为foo() 的第一个参数。 PHP 强制执行参数顺序,因此类似的调用需要为 foo("", "", $timeout=3)。您还有另外两个选择:

  • 让您的函数采用数组作为参数并检查数组键。我个人觉得这很丑,但它有效并且可读。优点是简单,以后很容易添加新参数。缺点是您的函数的自记录性较差,并且您不会从 IDE 获得太多帮助(自动完成、快速函数参数查找等)。
  • 设置不带参数的函数,并使用 func_get_args() 向 PHP 询问参数或使用 ... variable length arguments feature在 PHP 5.6+ 中。根据参数的数量,您可以决定如何处理每个参数。许多 JQuery 函数都会执行类似的操作。这很简单,但对于那些调用函数的人来说可能会感到困惑,因为它也不是自记录的。而且你的论点仍然没有被命名。

关于php - PHP 是否允许命名参数,以便可以在函数调用中省略可选参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19126860/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com