我要实现的目标:当不带任何参数调用test()时,我希望使用默认参数调用nested()函数。
UPD:要求:
nested()
函数复制粘贴的默认参数值$arr
参数值test()
具有多个参数(在这种情况下,... func_get_args()无效)test()
方法的类,它们的默认$arr
参数调用了其他类的nested()
方法。我想实现当使用默认参数调用nested()
方法时使用默认参数调用test()
方法。有可能吗?
<?php
function test(int $i = 0, array $arr = null)
{
nested($arr);
}
function nested(array $arr = [1,2,3])
{
var_dump($arr);
}
test();
test(5, [4,5,6]);
答案 0 :(得分:2)
您可以将$arr
与argument unpacking(func_get_args()
)传递给实际的参数,而不是传递...
到嵌套函数中
function test(array $arr = null)
{
nested(...func_get_args());
}
function nested(array $arr = [1,2,3])
{
var_dump($arr);
}
test();
如果希望它与更复杂的参数设置一起使用,则可以查看传递的参数数量(func_num_args()
),在这种情况下,请检查是否少于2个参数,以及有,然后强制不带任何参数的呼叫。您可以检查是否有更复杂的模式$arr
是null
,但是如果用户通过null
...
function test(int $i = 0, array $arr = null)
{
if ( func_num_args() < 2 ) {
nested();
}
else {
nested($arr);
}
}
答案 1 :(得分:1)
检查数组是否为空
function test(array $arr = null)
{
if (empty($arr)) {nested();}else{nested($arr);}
}
function nested(array $arr = [1,2,3])
{
var_dump($arr);
}
test();