【发布时间】:2012-11-03 10:25:54
【问题描述】:
这可能是 PHP 的一个限制,但是否有可能以某种方式调用一个函数 - 并强制执行可选参数的“默认”值 - 即使在函数调用中,给出了可选参数(并且 == null)?
也许更容易表达我的意思:
<?php
function funcWithOptParam($param1, $param2 = 'optional') {
print_r('param2: ' . $param2);
}
funcWithOptParam('something'); // this is the behaviour I want to reproduce
// this will result in 'param2: optional'
funcWithOptParam('something', null); // i want $param2 to be 'optional', not null
// this will result in 'param2: ' instead of 'param2: optional'
?>
现在,最简单的答案是“不要写 null 然后” - 但在我的特殊情况下,我得到一个参数 array 用于 function 调用,并且只能这样做:
<?php
funcWithOptParam($param[0], $param[1]);
?>
所以即使$param[1] 是null,null 也会覆盖可选参数的默认值
我只看到一个解决方案 - 跳过可选参数,并这样做:
<?php
function funcWithOptParam($something, $notOptional) {
if($notOptional === null) {
$notOptional = 'defaultvalue';
}
...
}
?>
但我想知道是否有其他解决方案。 PHP 中有一个“真实的”null 值吗?这真的转化为“无”吗?像 undefined 在 js 中的东西?
【问题讨论】:
-
一个 Hacky 解决方案是通过
preg_match源代码找到默认值。怀疑它是否适用于数组。
标签: php function optional-parameters