问题描述
在PHP 4/5中是否可以在调用时指定一个命名的可选参数,从而跳过您不想指定的参数(例如在python中)?
Is it possible in PHP 4/5 to specify a named optional parameter when calling, skipping the ones you don't want to specify (like in python) ?
类似的东西:
function foo($a,$b='', $c='') {
// whatever
}
foo("hello", $c="bar"); // we want $b as the default, but specify $c
谢谢
推荐答案
不,这是不可能的:如果要传递第三个参数,则必须传递第二个参数.而且命名参数也不可能.
No, it is not possible : if you want to pass the third parameter, you have to pass the second one. And named parameters are not possible either.
一种解决方案"是仅使用一个参数,一个数组并始终传递它……但不要总是在其中定义所有内容.
A "solution" would be to use only one parameter, an array, and always pass it... But don't always define everything in it.
例如:
function foo($params) {
var_dump($params);
}
并以这种方式调用它:
foo(array(
'a' => 'hello',
));
foo(array(
'a' => 'hello',
'c' => 'glop',
));
foo(array(
'a' => 'hello',
'test' => 'another one',
));
将为您提供此输出:
array
'a' => string 'hello' (length=5)
array
'a' => string 'hello' (length=5)
'c' => string 'glop' (length=4)
array
'a' => string 'hello' (length=5)
'test' => string 'another one' (length=11)
但是我不太喜欢这种解决方案:
But I don't really like this solution :
- 您将丢失phpdoc
- 您的IDE将不再能够提供任何提示...这很糟糕
因此,仅在非常特殊的情况下才使用此方法-例如,对于具有很多选项参数的函数...
So I'd go with this only in very specific cases -- for functions with lots of optionnal parameters, for instance...
这篇关于命名的PHP可选参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!