1

我有一个名为' Parse'的函数,它位于一个对象' Core'中,到目前为止,该函数有5个参数,每个参数都有默认值[true,false]。

假设我想更改第三个参数,但保持其余参数不变,我是否必须为其余参数分配值,或者我可以像这样跳过:

$Core->Parse(,,false,,);

不确定这对你是否有意义。我只是想在我继续做之前问这个问题。或者如果这不可能,除了填写其他参数值之外,还有什么其他方法,或者没有?

任何反馈都会很棒。

谢谢。

4

2 回答 2

0

您必须提供所有参数,直到您要设置的参数,如果您不需要第一个参数,只需使用函数定义中列出的默认值。

但是,您可以制作一个快捷方法

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
   }
   ...
}
于 2013-08-04T20:20:44.660 回答
0

这通过在函数定义本身中定义默认值的常用技术是不可能的。(但是,如果有默认值,您可以省略所有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');
于 2013-08-04T20:17:58.597 回答