【发布时间】:2014-05-09 07:57:11
【问题描述】:
我正在尝试学习 PHP,但现在我被困在“静态匿名函数”中。
我在教程中找到了这个 (http://www.slideshare.net/melechi/php-53-part-2-lambda-functions-closures-presentation)
"面向对象
- Lambda 函数是闭包,因为它们会自动绑定到创建它们的类的范围内。
- '
$this' 在作用域中并不总是需要。- 删除“
$this”可以节省内存。- 您可以通过将 Lambda 函数声明为静态来阻止此行为。”
这段代码有什么问题?
我收到此错误:
解析错误:解析错误,在第 11 行的 C:\wamp\www\z-final\a.php 中预期为 `T_PAAMAYIM_NEKUDOTAYIM'
为什么这行代码不起作用“return static function(){var_dump($this);};” ?
class foo
{
public function getLambda()
{
return function(){var_dump($this);};
}
public function getStaticLambda()
{
return static function(){var_dump($this);};
}
}
$foo = new foo();
$lambda = $foo->getLambda();
$staticLambda = $foo->getStaticLambda();
$lambda();
$staticLambda();
【问题讨论】:
-
static关键字在return和function()之间是问题所在,你试图达到什么目的? -
不,不是。问题是没有使用 PHP 5.4+