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.
命名参数的传递方式是在值前面加上参数名称前缀,后跟冒号。允许使用保留关键字作为参数名称。参数名称必须是标识符,不允许动态指定。
例如。在示例中仅传递第三个可选参数:
foo(timeout: 3);
在 PHP 8 之前,命名参数在 PHP 中是不可能的。从技术上讲,当您致电时foo($timeout=3)
它正在评估$timeout=3
首先,结果是3
并将其作为第一个参数传递给foo()
。 PHP 强制执行参数顺序,因此类似的调用需要是foo("", "", $timeout=3)
。您还有另外两个选择:
- 让您的函数采用数组作为参数并检查数组键。我个人觉得这很丑,但它有效并且可读。优点是简单,以后很容易添加新参数。缺点是您的函数的自记录性较差,并且您不会从 IDE 获得太多帮助(自动完成、快速函数参数查找等)。
- 设置不带参数的函数并使用 PHP 请求参数func_get_args()或使用
...
可变长度参数功能在 PHP 5.6+ 中。根据参数的数量,您可以决定如何处理每个参数。许多 JQuery 函数都会执行类似的操作。这很简单,但对于那些调用函数的人来说可能会感到困惑,因为它也不是自记录的。而且你的论点仍然没有被命名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)