重写 PHP 中的默认函数参数
PHP 函数支持在调用函数时使用默认参数来设置后备值。但是,设置特定参数同时保持其前面参数的默认值可能具有挑战性。
考虑以下函数:
<code class="php">function foo($blah, $x = "some value", $y = "some other value") { }</code>
$x 和 $y 的默认参数是“一些值”和“其他值”。但是,如果您想在使用 $x 默认值的同时覆盖 $y 的默认值,该怎么办?
尝试使用 null 覆盖默认值,例如:
<code class="php">foo("blah", null, "test"); // Does not work</code>
或
<code class="php">foo("blah", "", "test"); // Does not work</code>
不会产生所需的结果。
另一种方法,将默认变量分配给命名变量变量,例如:
<code class="php">foo("blah", $x, $y = "test");</code>
也无法覆盖默认值。
要克服此挑战,请修改函数声明如下:
<code class="php">function foo($blah, $x = null, $y = null) { if (null === $x) { $x = "some value"; } if (null === $y) { $y = "some other value"; } }</code>
这允许您进行如下调用:
<code class="php">foo('blah', null, 'non-default y value');</code>
并且仍然保持 $x 的默认值。
注意: 仅默认参数作为函数的最后一个参数。在函数定义中声明默认值时,不可能省略参数并覆盖后续参数。
以上是如何在维护其他参数的同时覆盖 PHP 中的默认函数参数?的详细内容。更多信息请关注PHP中文网其他相关文章!