2009-04-21 21 views
5

Si Rubí es invitado a una fiesta y trae:equivalente PHP de enviar y getattr?

foobarobject.send('foomethod') 

.. y Python se invita y al mismo partido y trae:

getattr(foobarobject, 'foomethod')() 

.. lo que hace PHP tiene que llevar a la fiesta ?

pregunta Bono: Si Ruby y Python tiene celos de partido-favores de PHP, lo términos Inglés iban a buscar en la documentación de PHP con el fin de hablar de ello a espaldas de PHP?

+0

Las dos son diferentes: la versión de Ruby invoca el método; la versión de Python devuelve un método vinculado. – Miles

+5

+1 por la forma creativa de formular la pregunta :) –

+0

@Miles: la pregunta ahora se modifica al agregar paren a la versión de python. – dreftymac

Respuesta

10

PHP trae esta:

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

... y el coque y patatas fritas.

EDITAR:

Aunque el término de lo anterior es que no hay nada variable variables hablando específicamente de hacerlo a un objeto en el manual. Sin embargo, se puede lograr lo mismo con call_user_func:

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

PHP es sombrío .... –

3

Usando variable para contener el nombre del método. Más o menos lo mismo que el primer ejemplo de Paolo, pero tal vez no sea tan obvio a menos que lo sepa.

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

Usted también tiene el Reflection classes.

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