Pythonでは、次のことができます。
def foo(param1, param2):
def bar():
print param1 + param2
bar()
しかし、PHPでのこの動作にはいくつかの問題があります。私はこれが次のように機能することを期待しています:
function foo($param1, $param2)
{
function bar()
{
echo $param1 + $param2;
}
bar();
}
しかし、それは失敗します。だから私はクロージャについていくつか読んだ(これはクロージャと呼ばれているのではないか?それはPythonである、私が知っている)。また、無名関数(クロージャとして実装されていると言われています)に関するphpドキュメントでは、use()式を次のように使用するように指示されています。
function foo($param1, $param2)
{
function bar() use($param1, $param2)
{
echo $param1 + $param2;
}
bar();
}
しかし、それでも失敗します。そこで、次のようにPHPの無名関数aに変更しました。
function foo($param1, $param2)
{
$bar = function() use($param1, $param2)
{
echo $param1 + $param2;
};
$bar();
}
それは機能しますが、本当に醜いように見えます。私は何かが足りないのですか?これを何らかの方法で改善できますか?それとも、「醜い」方法を使用する必要がありますか?
(私は閉鎖が有用であるかどうかについての議論を探していません)