在php中,可以这样做:
function foo( $var = "bar" ){
echo $var;
}
foo(); // output : bar
foo("cheese"); // output : cheese
我试图使用一个函数,如下所示:
function foo( $var = get_defined_vars() ){}
返回了一个解析错误:
Parse error: syntax error, unexpected '(', expecting ')'
显而易见的答案就是像这样传递变量
function foo( $var ){
// do stuff
}
foo( get_defined_vars() );
然而,该函数是可重载的,可以处理许多参数。
我通常使用像:
这样的功能foo( $var1, $var2, $var3 ... etc );
但是我需要foo
函数上方范围内定义的变量,这意味着我每次都使用foo
函数来传递get_defined_vars()
。
我觉得很烦人每次我想使用这个函数我都要调用get_defined_vars();
如下:
foo( get_defined_vars(), $var1, $var2, $var3 ... etc );
那么,请问有人能想出办法吗?
我试过这个,也无济于事:
function foo(){
$args = func_get_args();
array_unshift( get_defined_vars() );
call_user_func_array( "bar", $args );
}
function bar(){
// do stuff
}
答案 0 :(得分:2)
默认值必须是常量表达式,而不是(例如)变量,类成员或函数调用。
答案 1 :(得分:0)
尝试以下几点:
function foo( $var1, $var2, $varForDefinedVars=null ){
if (is_null($varForDefinedVars)){
$varForDefinedVars = get_defined_vars();
}
}