Thread Methodenaufruf anhand des Methodennamens "objektorientiert" (8 answers)
Opened by Daniel at 2009-12-09 15:21

murphy
 2009-12-09 23:58
#129151 #129151
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
2009-12-09T19:07:39 betterworld
[...]
Was genau ist eigentlich noch mal der Grund dafür, dass man Methoden aus Stringvariablen auch mit strict noch aufrufen kann?
[...]

Ich denke mal das liegt daran, dass auch ein "normaler" Aufruf der Form $object->method(...) eigentlich eine symbolische Referenz auflöst, da zum Zeitpunkt der semantischen Analyse nicht bekannt ist, in welchen Paketen method gesucht werden muss. Erst wenn der Aufruf tatsächlich ausgeführt wird, kann der Interpreter nachsehen, mit welchem Paket $object gesegnet wurde und dann die passende Methode in den relevanten Symboltabellen suchen.

Es macht wohl weder vom Sicherheitsaspekt noch von der Ausführungsgeschwindigkeit her einen signifikaten Unterschied auch den Methodennamen aus einer Variablen zu nehmen — mit dem Paketnamen von dem aus die Methodensuche gestartet werden soll hat man ohnehin bereits einen Textbaustein, der den auszuführenden Code bestimmt und daher im Vorhinein geprüft werden sollte und das Nachschlagen geht nicht schneller, nur weil das Skalar mit dem Methodennamen darin konstant ist und zum Syntaxbaum des Programmes gehört.
When C++ is your hammer, every problem looks like your thumb.

View full thread Methodenaufruf anhand des Methodennamens "objektorientiert"