【发布时间】:2012-06-06 19:20:39
【问题描述】:
在 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 匿名函数,就像这样:
function foo($param1, $param2)
{
$bar = function() use($param1, $param2)
{
echo $param1 + $param2;
};
$bar();
}
这确实有效,但它看起来真的很难看。我错过了什么吗?我可以以任何方式改善这一点吗?还是我只需要使用“丑陋”的方式?
(我不是在寻找关于闭包是否有用的讨论)
【问题讨论】:
标签: php closures anonymous-function