PHP эквивалент отправки и getattr? - PullRequest
6 голосов
/ 21 апреля 2009

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

foobarobject.send('foomethod') 

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

getattr(foobarobject, 'foomethod')()

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

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

Ответы [ 2 ]

11 голосов
/ 21 апреля 2009

PHP приносит это:

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

... и кокс с чипсами.

EDIT

Несмотря на то, что термин для вышеупомянутого - variable variables, в руководстве ничего не говорится о том, чтобы делать это с объектом. Тем не менее, вы можете достичь того же самого с call_user_func:

call_user_func(array($foobarobject, "foomethod"));
3 голосов
/ 21 апреля 2009

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

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

Вы также получили Классы отражения .

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