【问题标题】:PHP only provide one specific parameter among many with default valuePHP 在众多参数中只提供了一个具有默认值的特定参数
【发布时间】:2018-02-11 13:24:54
【问题描述】:
<?php

class klasa {
    public function funkcja($x = 'default', $y = 'value')
    {
        var_dump($x);
        var_dump($y);
    }
}

$x = new klasa;
$x->funkcja('other value');

如图所示,如何省略第一个参数有他的默认值,只影响第二个?

我试过$x-&gt;funkcja(NULL, 'other value');不行,$x-&gt;funkcja(, 'other value');也不行。

如何实现?

【问题讨论】:

  • 来自PHP Documentation Note that when using default arguments, any defaults should be on the right side of any non-default arguments; otherwise, things will not work as expected... 如果您绝对必须这样做,请考虑传递一个包含关联数组的参数;但是您必须处理功能代码中的差异

标签: php function methods parameters


【解决方案1】:

可能的答案之一。基本上,检查 value 是否为 null,然后分配一个默认值。

class klasa {
    public function funkcja($x, $y = 'value')
    {
        $x = ($x === null ? 'default' : $x);

        var_dump($x);
        var_dump($y);
    }
}

$x = new klasa;
$x->funkcja(null, 'value');

$x === null - 检查 $x 是否为空
?
'default' - 如果为 true 指定默认值
:
$x - 如果它不正确重新分配它的价值

【讨论】:

    猜你喜欢
    • 2018-07-08
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    相关资源
    最近更新 更多