Intereting Posts
Заполнение выпадающих ящиков при одновременном заполнении таблицы Является ли временная метка в микросекундах всегда уникальной? как я могу создать систему тегов с использованием php и mysql? Symfony: следует ли использовать FormBuilder для этой формы? PHP Mail скрывает другие адреса получателей с несколькими вызовами функций Какую кодировку использует ZipArchive для хранения имен файлов в созданном архиве? Сортировка узлов XML с помощью PHP Вставка данных из динамической формы регистрации с помощью переключателей Извлечение данных из двух таблиц. изображения не работают Прогресс загрузки файлов PHP Как получить 50-мегабайтный zip-файл с файлом размером 600 МБ в mysql datatable? php shared db connection (справка по шаблону проекта) Как запомнить текущий щелчок? JavaScript? PHP? PHP filter_var () – FILTER_VALIDATE_URL Перенаправление и перенаправление URL-адресов (с данными базы данных)

Анонимная функция для метода объекта

Возможный дубликат:
Закрытие вызова, присвоенное объекту напрямую

Почему это невозможно в PHP? Я хочу, чтобы создать функцию «на лету» для определенного объекта.

$a = 'a'; $tokenMapper->tokenJoinHistories = function($a) { echo $a; }; $tokenMapper->tokenJoinHistories($a); 

Related of "Анонимная функция для метода объекта"

С $obj->foo() вы вызываете методы, но вы хотите вызвать свойство как функцию / метод. Это просто смущает парсер, потому что он не нашел метод с именем foo() , но он не может ожидать, что какое-либо свойство будет чем-то вызываемым.

 call_user_func($tokenMapper->tokenJoinHistories, $a); 

Или вы расширяете свой

 class Bar { public function __call ($name, $args) { if (isset($this->$name) && is_callable($this->$name)) { return call_user_func_array($this->$name, $args); } else { throw new Exception("Undefined method '$name'"); } } } 

(Вероятно, в этом быстро написанном примере есть некоторые проблемы)

PHP пытается сопоставить метод экземпляра под названием «tokenJoinHistories», который не определен в исходном классе

Вы должны сделать вместо этого

 $anon_func = $tokenMapper->tokenJoinHistories; $anon_func($a); 

Прочитайте здесь документацию, особенно часть комментария.