Intereting Posts
какая единичная платформа для PHP: simpletest, phpunit или? Как использовать multi Auth в laravel 5.2 Библиотека утилиты CakePHP Xml запускает предупреждение DOMDocument Неверный вывод при использовании индексирования массива в строке UTF-8 Запретить доступ к файлу ajax с помощью htaccess API рекламы продукта Amazon: получите подробный URL-адрес продукта от ASIN PHP Fix Warning: Невозможно изменить информацию заголовка – уже отправленные заголовки Curl и pcntl_fork () Структура папки для проекта PHP Пользователь отправил CSV-файл для загрузки UTF-8 Каков хороший способ приблизиться к среде разработки при работе с Magento? laravel 5 schedule работает с -> cron ('* * / 1 * * *'), но не работает с -> hourly () Получить экран пользователя и размеры экрана в php при первой загрузке FOSRestBundle: показать мое пользовательское сообщение об исключении Невозможно изменить информацию заголовка – заголовки, уже отправленные

PHP-эквивалент send и getattr?

Если Руби приглашают на вечеринку и приносит:

foobarobject.send('foomethod') 

.. и Python приглашается на ту же вечеринку и приносит:

 getattr(foobarobject, 'foomethod')() 

.. что PHP должен принести на вечеринку?

Бонусный вопрос: если Ruby и Python завидуют партийным предпочтениям PHP, какие английские термины они будут искать в документации PHP, чтобы говорить об этом за спиной PHP?

PHP приносит следующее:

 $foobarobject->{"foomethod"}(); 

… и кокс и чипсы.

EDIT :

Хотя термин для вышеперечисленных variable variables является variable variables нет ничего конкретного, говоря о том, чтобы сделать это с объектом в руководстве. Однако вы можете добиться того же самого с помощью call_user_func :

 call_user_func(array($foobarobject, "foomethod")); 

Использование переменной для хранения имени метода. В значительной степени то же, что и первый пример Паоло, но, возможно, это не так очевидно, если вы не знаете об этом.

 $method = "foomethod"; $foobarobject->$method(); 

Вы также получили классы Reflection .

 $method = new ReflectionMethod('Foobar', 'foomethod'); $method->invoke(null);