Heim >Backend-Entwicklung >PHP-Tutorial >Warum schlagen Aufrufe nichtstatischer Methoden mit der Doppelpunktsyntax von PHP fehl?
Aufrufen nichtstatischer Methoden mithilfe der Doppelpunktsyntax
In PHP ist es möglich, nichtstatische Methoden mithilfe der Syntax statischer Methoden aufzurufen , class::method. Warum schlagen solche Aufrufe jedoch fehl?
Betrachten Sie das folgende Beispiel:
class Teste { public function fun1() { echo 'fun1'; } public static function fun2() { echo "static fun2"; } }
Der Aufruf von Teste::fun2() funktioniert, weil es eine statische Methode ist, der Aufruf von Teste::fun1 jedoch () löst einen Fehler aus.
Die Erklärung liegt im lockeren Umgang von PHP mit statischen und nicht statischen Methoden. Wenn eine nicht-statische Methode statisch aus einer nicht-statischen Methode der Klasse C heraus aufgerufen wird, verweist $this innerhalb der nicht-statischen Methode ns auf die Instanz von C.
Zum Beispiel:
class A { public function test() { echo $this->name; } } class C { public function q() { $this->name = 'hello'; A::test(); } } $c = new C; $c->q(); // prints hello
Obwohl dies zu unerwartetem Verhalten führen kann, handelt es sich nicht um einen Fehler, es sei denn, die strikte Fehlerberichterstattung ist aktiviert. Daher wird davon abgeraten, nicht statische Methoden statisch mit Doppelpunktsyntax aufzurufen, da dies zu Fehlern oder verwirrendem Verhalten führen kann.
Das obige ist der detaillierte Inhalt vonWarum schlagen Aufrufe nichtstatischer Methoden mit der Doppelpunktsyntax von PHP fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!