PHP equivalente di invio e getattr?
-
12-09-2019 - |
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
?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);