Закрытие PHP - Как я могу вызвать функцию класса с $ this - PullRequest
1 голос
/ 23 марта 2012

У меня небольшие проблемы с PHP Closures.

Хорошо, допустим, у меня есть:

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

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

Теперь все мои функции вызываются Шел. Внутри Shel есть функция load (). Есть ли способ вызвать Shel :: load () из замыкания, которое я связал, используя $ this?

Ура!

1 Ответ

4 голосов
/ 23 марта 2012

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...