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


PHP Closures - How do I call a class function with $this

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

好吧,假设我有:

$router->bind('~/~', function()
{
    print "I'm on the home page";
});
$shel = new Shel($config, $router);
$shel->start();

现在,我所有的函数都由Shel调用。在Shel中,有一个函数load()。有没有一种方法可以使用$this从我绑定的闭包中调用Shel::load()?

干杯!

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

对于PHP 5.3$,由于没有可以就如何以理智的方式执行该决议达成共识。这RFC描述了在下一个PHP版本。

因此,在PHP 5.3中,您必须解决一些问题:

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

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