Statische Member in PHP verstehen

DDD
Freigeben: 2024-09-13 06:22:31
Original
828 Leute haben es durchsucht

Understanding Static Members in PHP

In PHP gehören statische Mitglieder (Methoden und Eigenschaften) zur Klasse selbst, nicht zu einzelnen Objekten. Das bedeutet, dass Sie darauf zugreifen können, ohne eine Instanz der Klasse zu erstellen. Statische Mitglieder sind nützlich, wenn Sie Daten oder Funktionen über mehrere Objekte hinweg gemeinsam nutzen möchten. PHP bietet drei Schlüsselwörter für den Zugriff auf statische Methoden und Eigenschaften: self::, parent:: und static::. Jedes funktioniert anders, insbesondere wenn die Vererbung verwendet wird. In diesem Artikel erklären wir die Funktionsweise dieser Schlüsselwörter und zeigen ihre Unterschiede anhand von Beispielen.

Wann sollten statische Mitglieder verwendet werden?

  • Globale Variablen: Statische Eigenschaften können als globale Variablen innerhalb einer Klasse verwendet werden, auf die alle Instanzen zugreifen können.

  • Hilfsmethoden: Statische Methoden können Hilfsfunktionen bereitstellen, die von einzelnen Objekten unabhängig sind.

  • Konstanten auf Klassenebene: Statische Eigenschaften können verwendet werden, um Konstanten auf Klassenebene zu definieren.

  • Singleton-Muster: Statische Methoden und Eigenschaften sind für die Implementierung des Singleton-Musters unerlässlich.

Statische Methoden aufrufen

Um eine statische Methode aufzurufen, verwenden Sie den Operator :: gefolgt vom Methodennamen. Hier ist ein Beispiel:

class MyClass {
    public static function greet() {
        echo "Hello, world!";
    }
}

MyClass::greet(); // Output: Hello, world!
Nach dem Login kopieren

Statische Eigenschaften aufrufen

Um auf eine statische Eigenschaft zuzugreifen, verwenden Sie auch den Operator :: gefolgt vom Eigenschaftsnamen. Hier ist ein Beispiel:

class MyClass {
    public static $count = 0;

    public static function incrementCount() {
        self::$count++;
    }
}

MyClass::incrementCount();
echo MyClass::$count; // Output: 1
Nach dem Login kopieren

Die drei Schlüsselwörter: self::, parent:: und static::

  1. selbst::
    Das Schlüsselwort self:: bezieht sich auf die Klasse, in der der Code geschrieben ist. Die Vererbung wird nicht berücksichtigt. Das heißt, wenn eine untergeordnete Klasse eine statische Methode oder Eigenschaft überschreibt, verweist self:: immer noch auf die übergeordnete Klasse, in der der Code definiert ist.

  2. Elternteil::
    Das Schlüsselwort parent:: wird verwendet, um eine statische Methode oder Eigenschaft aus der unmittelbaren übergeordneten Klasse aufzurufen. Es umgeht alle überschriebenen Methoden in der untergeordneten Klasse und stellt sicher, dass die Methode oder Eigenschaft des übergeordneten Elements verwendet wird.

  3. statisch::
    Das Schlüsselwort static:: funktioniert ähnlich wie self::, berücksichtigt jedoch die späte statische Bindung. Das heißt, wenn eine statische Methode oder Eigenschaft in einer untergeordneten Klasse überschrieben wird, verweist static:: auf die Methode oder Eigenschaft in der am meisten abgeleiteten Klasse, selbst wenn sie von einer übergeordneten Klasse aufgerufen wird.

Beispiele, um die Unterschiede aufzuzeigen

Sehen wir uns an, wie sich jedes dieser Schlüsselwörter in einem PHP-Programm mit Vererbung verhält.

Beispiel 1: Verwendung von self::

class A {
    public static function sayHello() {
        return "Hello from A";
    }

    public static function test() {
        return self::sayHello();
    }
}

class B extends A {
    public static function sayHello() {
        return "Hello from B";
    }
}

echo B::test(); // Output: "Hello from A"
Nach dem Login kopieren

In diesem Beispiel bezieht sich self:: in Klasse A auf die Methode sayHello() in A. Auch wenn Klasse B die Methode überschreibt, ruft self:: die Methode der übergeordneten Klasse auf und erzeugt die Ausgabe „Hello from A.“

Beispiel 2: Verwendung von parent::

class A {
    public static function sayHello() {
        return "Hello from A";
    }
}

class B extends A {
    public static function sayHello() {
        return parent::sayHello() . " and B";
    }
}

echo B::sayHello(); // Output: "Hello from A and B"
Nach dem Login kopieren

In diesem Beispiel ruft Klasse B parent::sayHello() auf, um die Nachricht von der übergeordneten Klasse A einzuschließen, und hängt dann ihre eigene Nachricht an. Die Ausgabe ist „Hallo von A und B.“

Beispiel 3: Verwendung von static::

class A {
    public static function sayHello() {
        return "Hello from A";
    }

    public static function test() {
        return static::sayHello();
    }
}

class B extends A {
    public static function sayHello() {
        return "Hello from B";
    }
}

echo B::test(); // Output: "Hello from B"
Nach dem Login kopieren

Hier bezieht sich static:: in Klasse A auf die Methode sayHello() in der am meisten abgeleiteten Klasse, nämlich B. Dies liegt daran, dass static:: eine späte statische Bindung zulässt und die Methode in Klasse B aufgerufen wird, was dazu führt „Hallo aus B.“

Hauptunterschiede

  • self::: Bezieht sich auf die Klasse, in der es verwendet wird, wobei die Vererbung ignoriert wird. Dies ist nützlich, wenn Sie nicht möchten, dass Methoden in untergeordneten Klassen die aufgerufene Methode beeinflussen.

  • parent::: Ruft speziell Methoden oder Eigenschaften aus der übergeordneten Klasse auf, auch wenn sie in der untergeordneten Klasse überschrieben werden. Dies ist nützlich, wenn Sie die Funktionalität einer übergeordneten Klasse erweitern, aber dennoch Zugriff auf die ursprünglichen Methoden benötigen.

  • static::: Ermöglicht die späte statische Bindung, d. h. sie verweist zur Laufzeit auf die Methode oder Eigenschaft in der am meisten abgeleiteten Klasse, auch wenn sie von einer übergeordneten Klasse aufgerufen wird. Dies ist nützlich für Situationen, in denen Sie möchten, dass sich das Verhalten an die aufrufende Klasse anpasst.

Wenn Sie die Unterschiede zwischen self::, parent:: und static:: verstehen, können Sie robusteren, wartbareren PHP-Code schreiben, insbesondere in komplexen objektorientierten Systemen.

Das obige ist der detaillierte Inhalt vonStatische Member in PHP verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!