私は自分自身を呼び出すはずの無名関数を持っています。
再帰関数を呼び出すときは、call_user_func_array(__FUNCTION__, $params);
を使用することをお勧めします。
例には引数がありませんので、私はcall_user_func(__FUNCTION__);
がより適していると思います。
次のコードが正常に動作することを期待し、願っていますが、それは簡単すぎます。
$bar = 10;
$foo = 0;
$f = function() use (&$bar,$foo) {
if($bar){ // condition needed to prevent infinite loop
echo $bar-- . PHP_EOL;
call_user_func(__FUNCTION__); // wont work
}
};
$f();
__FUNCTION__
"Magic constant"コードは、関数の変数の通過を可能にするように適合される必要があるので、クロージャに使用できません。関数を通常の引数として渡すか、use
ステートメントを使用して関数を使用可能にすることができます。
関数は、引数として渡された
$bar = 10;
$foo = 0;
$f = function($__FUNCTION__ = null) use (&$bar, $foo) {
if($__FUNCTION__ && $bar){
echo $bar-- . PHP_EOL;
call_user_func($__FUNCTION__, $__FUNCTION__);
}
};
$f ($f);
機能が
$bar = 10;
$foo = 0;
$__FUNCTION__ = function() use (&$bar, $foo, &$__FUNCTION__) {
if($bar){
echo $bar-- . PHP_EOL;
call_user_func($__FUNCTION__);
}
};
$__FUNCTION__();
Working exampleuse
声明を経由して渡され、>ideoneそれを編集 - をクリックしてください!再実行コード。
コードを投稿すると役立ちます。 –
答えをdownvoting停止、あなたの元の質問はどこにでも匿名関数は言及していませんでした。編集や削除の時間を与えるべきです。 – Esailija
http://stackoverflow.com/questions/2480179/anonymous-recursive-php-functionsをご覧ください。 –