我在PHP闭包方面遇到了一些麻烦。
好的,让我说我有:
$router->bind('~/~', function()
{
print "I'm on the home page";
});
$shel = new Shel($config, $router);
$shel->start();
现在,我所有的功能都由Shel调用。在Shel里面,有一个函数load()。有没有办法从我绑定的闭包调用Shel :: load(),使用$ this?
干杯!
答案 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。