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
}