php
是否可能在python
中命名函数参数?一个例子的使用情况是:在PHP中命名的函数参数
function foo($username = "", $password = "", $timeout = 10) {
}
我要重写$timeout
:
foo("", "", 3);
难看。我宁愿做:
foo(timeout=3);
php
是否可能在python
中命名函数参数?一个例子的使用情况是:在PHP中命名的函数参数
function foo($username = "", $password = "", $timeout = 10) {
}
我要重写$timeout
:
foo("", "", 3);
难看。我宁愿做:
foo(timeout=3);
号,命名参数在PHP中是不可能的。从技术角度而言,当您致电foo($timeout=3)
时,它首先评估$timeout=3
,结果为3
并将其作为第一个参数传递给foo()
。 PHP强制执行参数顺序,因此可比较的调用将需要为foo("", "", $timeout=3)
。您有两个其他选项:
func_get_args()
的参数或在PHP 5.6+中使用...
variable length arguments feature。根据参数的数量,您可以决定如何处理每个参数。很多JQuery函数都是这样做的。这很容易,但对于那些调用你的函数的人来说可能会造成混淆,因为它也不是自我记录。而你的论点仍然没有命名。请注意an RFC for named parameters仍在“正在讨论中”。
老问题,但这里有一些更多的信息。
正如其他答案中所述,PHP不直接支持命名参数。 VBA是另一种具有奢华的语言。
在PHP中,你可以使用一个相当合理的替代品。 PHP的数组处理是特别好,你可以使用一个关联数组传递的参数数组,如下所示:
function foo($parms=array()) {
$username = parms['username']?:'…';
$password = parms['password']?:'…';
$timeout = parms['timeout']?:'…';
}
foo(array('timeout'=>10));
注意使用?:
运营商的,允许一个简单的默认如果输入数组元素没有按”不存在。
不是光滑的,但命名参数还有另一个重要的作用:它们允许您使用大量的选项,而没有过长的有序参数列表。
写入功能的另一种方法是使用`提取功能:
function foo($parms=array()) {
$username = '…';
$password = '…';
$timeout = '…';
extract($parms,EXTR_IF_EXISTS);
}
这里extract
函数将值到变量,但前提是他们已经被定义。这可以防止导入你不知道的变量。
答案是否定的,但我相信目前正在讨论关于该主题的[RFC](https://wiki.php.net/rfc/named_params),但它不太可能超出讨论阶段...... 。我相信Facebook的[hh](https://t.co/I0RUiMMEsb)实现它,虽然我做了 –
,不起作用。 – Justin
对不起,我误解你在问什么。 –