Domanda

Se Rubino viene invitato a una festa e porta:

foobarobject.send('foomethod') 

.. e Python viene invitato allo stesso partito e porta:

getattr(foobarobject, 'foomethod')()

.. ciò che PHP deve portare alla festa?

Domanda bonus: Se Ruby e Python ottenuto geloso di partito-favori di PHP, quali termini inglese avrebbero cercare nella documentazione di PHP al fine di parlarne alle spalle di PHP

?
È stato utile?

Soluzione

PHP porta questa:

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

... e la coca e patatine fritte.

Modifica :

Anche se il termine per quanto sopra è variable variables non c'è niente di specificamente parlando di farlo ad un oggetto nel manuale. Tuttavia, è possibile ottenere la stessa cosa con call_user_func :

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

Altri suggerimenti

Utilizzo di variabile per contenere il nome del metodo. Praticamente lo stesso come primo esempio di Paolo, ma forse non così evidente a meno che non si sa su di esso.

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

È inoltre a disposizione i classi Reflection .

$method = new ReflectionMethod('Foobar', 'foomethod');
$method->invoke(null);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top