PHP闭包 - 如何用$ this调用类函数

时间:2012-03-23 13:26:28

标签: php closures

我在PHP闭包方面遇到了一些麻烦。

好的,让我说我有:

$router->bind('~/~', function()
{
    print "I'm on the home page";
});

$shel = new Shel($config, $router);
$shel->start();

现在,我所有的功能都由Shel调​​用。在Shel里面,有一个函数load()。有没有办法从我绑定的闭包调用Shel :: load(),使用$ this?

干杯!

1 个答案:

答案 0 :(得分:4)

PHP 5.3: https://wiki.php.net/rfc/closures/object-extension

  

对于PHP 5.3 $,已删除对Closures的支持,因为没有   如何以理智的方式实现它,可以达成共识。这个   RFC描述了可以用来实现它的可能道路   下一个PHP版本。

所以在PHP 5.3中你必须解决一下:

$that = $this;
$router->bind('~/~', function() use ($that)
{
    print "I'm on the home page";
});

对于5.4,您只能使用$ this。