Heim > Backend-Entwicklung > PHP-Tutorial > Warum kann ich nicht-statische PHP-Methoden nicht mit dem Doppelpunkt-Operator (::) aufrufen?

Warum kann ich nicht-statische PHP-Methoden nicht mit dem Doppelpunkt-Operator (::) aufrufen?

Linda Hamilton
Freigeben: 2024-11-28 17:14:12
Original
294 Leute haben es durchsucht

Why Can't I Call Non-Static PHP Methods Using the Double Colon (::) Operator?

Grundlegendes zum Aufruf nicht-statischer Methoden mit Doppelpunkt (::)

Beim Versuch, eine nicht-statische Methode mit der Syntax von aufzurufen Wenn Sie statische Methoden (class::method) verwenden, kann es zu einem Fehler kommen. Im Gegensatz zu einem Konfigurationsproblem ist dieses Verhalten dem PHP-Design inhärent.

In PHP erfordern nicht-statische Methoden, dass zuerst eine Instanz erstellt wird, um aufgerufen zu werden. Der Fehler tritt auf, weil bei Verwendung der class::method-Syntax keine Instanz explizit bereitgestellt wird.

Unterscheidung zwischen statischen und nichtstatischen Methoden

Statische Methoden können ohne aufgerufen werden eine Instanz der Klasse, während nicht statische Methoden eine Instanz erfordern. Diese Unterscheidung wird im folgenden Beispiel deutlich:

class Teste {

    public function fun1() {
        echo 'fun1';
    }
    public static function fun2() {
        echo "static fun2" ;
    }
}

Teste::fun2(); // This is valid because fun2 is a static method
Teste::fun1(); // This will generate an error because fun1 is not a static method
Nach dem Login kopieren

Inkonsistentes Verhalten

PHP zeigt jedoch einiges inkonsistentes Verhalten bei nicht statischen Methoden, die statisch aufgerufen werden. Wenn eine nicht statische Methode statisch aus einer nicht statischen Methode derselben Klasse aufgerufen wird, verweist $this innerhalb der nicht statischen Methode auf die aktuelle Instanz der Klasse.

class A 
{
    public function test()
    {
        echo $this->name;
    }
}

class C 
{
    public function q()
    {
        $this->name = 'hello';
        A::test();
    }
}

$c = new C;
$c->q(); // This will print 'hello'
Nach dem Login kopieren

Dieses Verhalten kann als fehlerhaft angesehen werden, wenn die strikte Fehlerberichterstattung aktiviert ist.

Fazit

Aufruf nichtstatischer Methoden mit der Syntax von Von statischen Methoden wird generell abgeraten. Dies kann zu unerwartetem Verhalten oder Fehlern führen. Stattdessen wird empfohlen, die richtige Syntax zum Aufrufen nicht statischer Methoden zu verwenden. Dazu gehört das Erstellen einer Instanz der Klasse und das anschließende Aufrufen der Methode für diese Instanz.

Das obige ist der detaillierte Inhalt vonWarum kann ich nicht-statische PHP-Methoden nicht mit dem Doppelpunkt-Operator (::) aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage