在
Python中,您可以拥有以下内容:
def foo(param1,param2):
def bar():
print param1 + param2
bar()
我在PHP中遇到这种行为有些困难.
我希望这可以通过以下方式工作:
function foo($param1,$param2)
{
function bar()
{
echo $param1 + $param2;
}
bar();
}
但那失败了.所以我读了一些关于闭包的内容(这被称为闭包不是吗?它是在Python中,我知道).在php documentation中关于匿名函数(他们说已经实现为闭包),他们告诉你以下列方式使用use()表达式:
function foo($param1,$param2)
{
function bar() use($param1,$param2)
{
echo $param1 + $param2;
}
bar();
}
但那仍然失败.所以我把它改成了PHP-anonymous函数,就像这样:
function foo($param1,$param2)
{
$bar = function() use($param1,$param2)
{
echo $param1 + $param2;
};
$bar();
}
这确实有效,但它看起来真的很难看.我错过了什么吗?我可以用任何方式改进吗?或者我只需要使用’丑陋’的方式?
(我不是在寻找关于闭包是否有用的讨论)