7 Stimmen

PHP-Entsprechung von send und getattr?

Wenn Ruby zu einer Party eingeladen wird und etwas mitbringt:

foobarobject.send('foomethod') 

und Python wird zur gleichen Party eingeladen und bringt:

getattr(foobarobject, 'foomethod')()

was muss PHP für die Party mitbringen?

Bonusfrage: Wenn Ruby und Python eifersüchtig auf die Vorzüge von PHP wären, nach welchen englischen Begriffen würden sie dann in der PHP-Dokumentation suchen, um hinter dem Rücken von PHP darüber zu sprechen?

0 Stimmen

Die beiden sind unterschiedlich: Die Ruby-Version ruft die Methode auf, die Python-Version gibt eine gebundene Methode zurück.

5 Stimmen

+1 für die kreative Art, die Frage zu formulieren :)

0 Stimmen

@Miles: Die Frage wurde geändert, indem der Python-Version ein Paren hinzugefügt wurde.

12voto

Paolo Bergantino Punkte 465120

PHP bringt dies mit sich:

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

... und die Cola und Chips.

EDITAR :

Obwohl der Begriff für das oben Genannte lautet variable variables Im Handbuch steht nichts darüber, wie man das mit einem Objekt macht. Sie können jedoch das Gleiche erreichen mit call_user_func :

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

3voto

OIS Punkte 9481

Verwendung einer Variablen zur Aufnahme des Methodennamens. Ziemlich genau dasselbe wie in Paolos erstem Beispiel, aber vielleicht nicht so offensichtlich, wenn man es nicht kennt.

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

Sie haben auch die Reflexionsklassen .

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X