В 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-анонимную функцию примерно так:
function foo($param1, $param2)
{
$bar = function() use($param1, $param2)
{
echo $param1 + $param2;
};
$bar();
}
Это действительно работает, но выглядит очень уродливо. Я что-то пропустил? Могу ли я улучшить это каким-либо образом? Или мне просто придется использовать «уродливый» способ?
(я не ищу обсуждения полезности замыканий)