2011-01-06 6 views
1

In PHP kann ich dies tun:PHP: Begrenzung der variablen Variablen

$class = 'Notes'; 
echo $class::message(); 

aber es scheint, dass innerhalb einer Methode, ich kann das nicht tun:

echo ($this->myClass)::message(); 

und auch nicht tun können, dies:

echo someFunctionThatReturnsClassName()::message(); 

Kann jemand erklären warum? Und geben Sie Regeln darüber, wann und wie dieser Umleitungsmechanismus funktioniert?

Danke Gidi

Antwort

3

Dieses mit variablen Variablen ist kein Problem, es ist ein Problem mit PHP diese Syntax nicht erlaubt. Es gibt einen Vorschlag, dies im Kern zu beheben, jedoch wurde dieser bisher noch nicht akzeptiert: http://wiki.php.net/rfc/fcallfcall (und auch http://wiki.php.net/rfc/functionarraydereferencing)

+0

Guter Fang, wunderte sich über diesen. – karim79

+0

Danke, das beantwortet sehr gut mein zweites Beispiel, bu nicht mein erstes – shealtiel

+0

Nun ja, wie Ihr erstes in der Theorie ist das gleiche: indem Sie Klammern() hinzufügen, sagen Sie dem PHP-Interpreter, diesen Teil des Codes auszuführen und dann anzurufen eine statische Methode für diesen Fall. Welches wird fehlschlagen. Wenn Sie $ temp = ($ this-> myClass); $ temp :: message(), es wird wie ein Zauber wirken. – maartenba