在 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();
}
这确实有效,但它看起来真的很难看。我错过了什么吗?我可以以任何方式改善这一点吗?还是我只需要使用“丑陋”的方式?
(我不是在寻找关于闭包是否有用的讨论)