2009-04-21 9 views
5

Jeśli Ruby zostaje zaproszony na imprezę i przynosi:Odpowiednik PHP dla send i getattr?

foobarobject.send('foomethod') 

.. i Python zostaje zaproszony do tej samej partii i przynosi:

getattr(foobarobject, 'foomethod')() 

.. Czego PHP przynieść na imprezę ?

Bonus pytanie: Jeśli Ruby i Python dostał zazdrosny partyjnych łask PHP, w jakich warunkach English szukali w dokumentacji PHP, aby mówić o niej za plecami PHP?

+0

Oba są różne: wersja Ruby wywołuje metodę; wersja Pythona zwraca powiązaną metodę. – Miles

+5

+1 za kreatywny sposób na wyrażenie pytania :) –

+0

@Miles: pytanie jest teraz modyfikowane przez dodanie paren do wersji python. – dreftymac

Odpowiedz

10

PHP przynosi to:

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

... i koks i chipsy.

EDIT:

Chociaż termin na powyższe jest variable variables nie ma nic specjalnie mówić o zrobieniu go do obiektu w podręczniku. Jednakże, można osiągnąć to samo z call_user_func:

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

PHP jest ponure .... –

3

Korzystanie zmiennej posiadać nazwę metody. Podobnie jak pierwszy przykład Paola, ale może nie tak oczywiste, o ile nie wiesz o tym.

Masz również Reflection classes.

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