PHP - 继承函数默认值

时间:2011-05-15 08:41:07

标签: php function default inheritance

我有一个看起来像这样的函数:

function test($arg1 = 'my_value', $arg2 = 'second')
{
}

当我调用它时,我只想将第二个值设置为不同的值,如下所示:

test(inherit, 'changed value');

我发现可以将此行添加到我的函数中(当我的“inherit”更改为null时):

$arg1 = ( is_null( $arg1 ) ? 'my_value' : $arg1 );

有更好的方法,更好的解决方法吗?

4 个答案:

答案 0 :(得分:2)

根据参数的性质和数量,使用命名参数(至少是模拟的)可能是合理的:

function xyz($args) {
    $args += array(
        'x' => 'default',
        'q' => 'default 2',
        // ...
    );

    // ...
}

xyz(array('q' => 'hehe, not default'));

答案 1 :(得分:1)

你解决它的方式实际上非常实用。

另一种方法是每次在函数调用时传递与默认值相同的值。

如果那是结构性的,那么你必须重新考虑这个功能。

答案 2 :(得分:1)

制作两个不同的功能:

// Full function
function testex($arg1 = 'my_value', $arg2 = 'second')
{
}

// Shorthand when just argument 2 is needed
function test2($arg2 = 'second')
{
  return testex('my_value', $arg2);
}

这样,您不必在不需要时将null传递给第一个参数。

答案 3 :(得分:0)

你必须翻转它们,你不能把第一个值留空,

设置第一个值,让第二个值成为默认值;

更新:

如果你想让你的参数有动态长度,可以考虑使用func_get_args();

function something() {
    $args = func_get_args();
  ....
}

然后你可以测试你的参数的不同值或数据类型,让他们做任何事情,请