Heim  >  Artikel  >  Backend-Entwicklung  >  Die Definition des static-Schlüsselworts in PHP, späte Bindung und der Unterschied zum self-Schlüsselwort

Die Definition des static-Schlüsselworts in PHP, späte Bindung und der Unterschied zum self-Schlüsselwort

墨辰丷
墨辰丷Original
2018-06-09 10:38:041339Durchsuche

In diesem Artikel werden hauptsächlich die Definition des Schlüsselworts static in PHP, die späte Bindung und der Unterschied zum Schlüsselwort self vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

Übersicht

Ich lerne Designmuster. Ich habe diesen Artikel noch einmal gelesen und festgestellt, dass ich keins habe Gutes Verständnis des statischen Schlüsselworts. Überprüfen Sie es noch einmal.

statisches Schlüsselwort

Die Eigenschaften statischer Mitglieder und Methoden in PHP sind wie folgt:

1. Auf statische Mitglieder kann nicht über Instanzen von Klassen zugegriffen werden , aber static Die Methode ist in Ordnung.
2. Auf statische Mitglieder kann nicht über den ->-Operator zugegriffen werden.
3. Im Bereich einer statischen Methode kann das Schlüsselwort $this nicht angezeigt werden, was bedeutet, dass in der statischen Methode nicht auf normale Mitgliedsvariablen zugegriffen werden kann.
4. Auf statische Mitglieder und Methoden kann direkt über den Klassennamen zugegriffen werden, ohne das Objekt zu instanziieren.

Späte statische Bindungen

Seit PHP 5.3.0 hat PHP eine Funktion namens späte statische Bindung hinzugefügt, die in Vererbungsbereichen verwendet wird. Interner Verweis auf die statisch aufgerufene Klasse .

Um genau zu sein, besteht das Arbeitsprinzip der späten statischen Bindung darin, den Klassennamen im vorherigen „Nicht-Weiterleitungsaufruf“ zu speichern. Bei einem statischen Methodenaufruf ist der Klassenname der explizit angegebene (normalerweise auf der linken Seite des ::-Operators); bei einem nicht statischen Methodenaufruf ist es die Klasse, zu der das Objekt gehört. Der sogenannte „Weiterleitungsaufruf“ bezieht sich auf statische Aufrufe, die auf folgende Weise erfolgen: self::, parent::, static:: und forward_static_call(). Sie können die Funktion get_claimed_class() verwenden, um den Klassennamen der aufgerufenen Methode abzurufen, und static:: weist auf deren Gültigkeitsbereich hin.


Zum Verständnis dieser Funktion können Sie sich auf die Beispiele im Handbuch beziehen

selbst vs. statisch

Verwenden Sie a Demo, um den Unterschied zwischen self und static direkt zu erklären.
Selbstbeispiel:

Der Code lautet wie folgt:

<?php
class Vehicle {
    protected static $name = &#39;This is a Vehicle&#39;;
    public static function what_vehicle() {
        echo get_called_class()."\n";                
        echo self::$name;
    }
}
class Sedan extends Vehicle {
    protected static $name = &#39;This is a Sedan&#39;;
}
Sedan::what_vehicle();

Programmausgabe:

Der Code lautet wie folgt:

SedanThis is a Vehicle

statisches Beispiel:

Der Code lautet wie folgt:

<?php
class Vehicle {
    protected static $name = &#39;This is a Vehicle&#39;;
    public static function what_vehicle() {
        echo get_called_class()."\n";        
        echo static::$name;
    }
}
class Sedan extends Vehicle {
    protected static $name = &#39;This is a Sedan&#39;;
}
Sedan::what_vehicle();

Programmausgabe:

Der Code lautet wie folgt:

Sedan
This is a Sedan

Zusammenfassung: Oben Das ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird für das Studium aller hilfreich sein.

Verwandte Empfehlungen:

Verwenden der Snoopy-Klasse zum Parsen von HTML-Dateien

PHP-Simulationsbeitrag Drei häufige Verwendungszwecke von Anfragen

PHP-Definition und Implementierung des Ereignismechanismus

Das obige ist der detaillierte Inhalt vonDie Definition des static-Schlüsselworts in PHP, späte Bindung und der Unterschied zum self-Schlüsselwort. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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