Если Руби приглашают на вечеринку и приносит:
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);