2009-04-21 2 views
5

Если Рубин получает приглашен на вечеринку и приносит:PHP-эквивалент отправки и getattr?

foobarobject.send('foomethod') 

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

getattr(foobarobject, 'foomethod')() 

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

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

+0

Эти два варианта: версия Ruby вызывает метод; версия Python возвращает связанный метод. – Miles

+5

+1 для творческого способа выражения вопроса :) –

+0

@Miles: вопрос теперь изменен путем добавления paren к версии python. – dreftymac

ответ

10

PHP привозит:

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

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

EDIT:

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

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

PHP мрачен .... –

3

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

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

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

$method = new ReflectionMethod('Foobar', 'foomethod'); 
$method->invoke(null); 
Смежные вопросы