Intereting Posts
Yii как обновить все записи? Как сравнить подобие изображения с помощью php, независимо от масштаба, вращения? Не удается загрузить файл на сервер с помощью PHP Проблема с привязкой ключа PHP Eclipse Как экспортировать данные в файл excel с помощью PHPExcel Может ли CronJobs выполнить php, содержащий Javascript? Если нет, какие-либо альтернативы? как передать данные изображения uri из javascript в php Автозаполнение JQuery, заполняется данными из pHp json PHP: создание уникальных переменных в A для цикла Динамическая разбивка PHP без SQL Использование NetBeans для PHP, вывод XML, а не HTML, Netbeans видит ошибки PHP 5.2.x: $ _POST пуст, если какое-либо поле имеет значение «отбрасывать любые слова из любых слов»? Все электронные письма отправляются в папку спама GMail, Hotmail и других почтовых провайдеров, использующих phpmailer Как использовать php restful api-centric design internal вместо HTTP-запроса Как сделать калькулятор в PHP?

Как передать контекст объекта анонимной функции?

Есть ли способ передачи объектного контекста анонимной функции без передачи $this в качестве аргумента?

 class Foo { function bar() { $this->baz = 2; # Fatal error: Using $this when not in object context $echo_baz = function() { echo $this->baz; }; $echo_baz(); } } $f = new Foo(); $f->bar(); 

Вы можете назначить $this некоторой переменной, а затем использовать ключевое слово use чтобы передать эту переменную в функцию при определении функции, хотя я не уверен, что ее проще использовать. Во всяком случае, вот пример:

 class Foo { function bar() { $this->baz = 2; $obj = $this; $echo_baz = function() use($obj) { echo $obj->baz; }; $echo_baz(); } } $f = new Foo(); $f->bar(); 

Стоит отметить, что $obj будет рассматриваться как стандартный объект (а не как $this ), поэтому вы не сможете получить доступ к закрытым и защищенным членам.