我看到两个解决方案:
- 使用空参数创建函数。当提供空值时,在函数中检查它并将其替换为默认值。这是迂回的,因为它不再在原型中指定,但确实以最小的努力提供了默认值解决方案。
- 将您的原型转换为带有键值对的数组参数。这类似于第一个解决方案,但您可以使用诸如
array_merge
组合“默认值”数组和新传递的参数值的方法。
示例 1:
function abc($foo = null, $bar = null)
{
// defaulting parameters
if (is_null($foo)) $foo = 'Hello, world!'; // foo default value
if (is_null($bar)) $bar = 123.45; // bar default value
// on-ward with the function
}
// override bar, but not foo:
abc(null, 987.65);
示例 2:
function def($args)
{
// defaulting parameters
$args = array_merge(
array(
'foo' => 'Hello, world!', // Default foo value
'bar' => 123.45 // default bar value
),
$args // override with supplied values
);
// on-ward with the function
}
// override bar, but not foo
def(array('bar'=>987.65));