我有一个名为' Parse
'的函数,它位于一个对象' Core
'中,到目前为止,该函数有5个参数,每个参数都有默认值[true,false]。
假设我想更改第三个参数,但保持其余参数不变,我是否必须为其余参数分配值,或者我可以像这样跳过:
$Core->Parse(,,false,,);
不确定这对你是否有意义。我只是想在我继续做之前问这个问题。或者如果这不可能,除了填写其他参数值之外,还有什么其他方法,或者没有?
任何反馈都会很棒。
谢谢。
我有一个名为' Parse
'的函数,它位于一个对象' Core
'中,到目前为止,该函数有5个参数,每个参数都有默认值[true,false]。
假设我想更改第三个参数,但保持其余参数不变,我是否必须为其余参数分配值,或者我可以像这样跳过:
$Core->Parse(,,false,,);
不确定这对你是否有意义。我只是想在我继续做之前问这个问题。或者如果这不可能,除了填写其他参数值之外,还有什么其他方法,或者没有?
任何反馈都会很棒。
谢谢。
您必须提供所有参数,直到您要设置的参数,如果您不需要第一个参数,只需使用函数定义中列出的默认值。
但是,您可以制作一个快捷方法
class Core {
...
public function shortParse($somevalue) {
$this->Parse("param 1 default value",
"param 2 default value",
$somevalue,
"param 4 default value", //dont need the next 2
"param 5 default value");//if they have default values
}
...
}
这通过在函数定义本身中定义默认值的常用技术是不可能的。(但是,如果有默认值,您可以省略所有args,或者提供初始 arg 并仅提供后续参数的默认值。)
即:使用...
function my_super_function($arg1='hello', $arg2='world') {
// Do stuff
}
my_super_function(, 'mum');
……行不通。
但是,没有什么可以阻止您在函数本身中检查有效的默认值(使用您希望的任何标准)。
例如:
function my_super_function($arg1='hello', $arg2='world') {
$arg1 = $arg1 ? $arg1 : 'hello';
// Do stuff
}
my_super_function(null, 'mum');