Heim > Artikel > Backend-Entwicklung > Detaillierte Erklärung zur Verwendung des Schlüsselworts self in PHP
Unterschiede von Parent, Statisch und Dies
Wenn Sie das Selbst vollständig verstehen wollen, müssen Sie es von Parent, Statisch und Dies unterscheiden. Nachfolgend werden Vergleiche angestellt.
parent
Die Unterscheidung zwischen self und parent ist relativ einfach: parent bezieht sich auf die versteckte Methode (oder Variable) der übergeordneten Klasse/Basisklasse und self bezieht sich zu seiner eigenen Methode (oder Variablen). Rufen Sie beispielsweise den Konstruktor der übergeordneten Klasse im Konstruktor auf: (Kostenloses Teilen von Lernvideo-Tutorials: PHP-Video-Tutorial)
class Base { public function __construct() { echo "Base contructor!", PHP_EOL; } } class Child { public function __construct() { parent::__construct(); echo "Child contructor!", PHP_EOL; } } new Child; // 输出: // Base contructor! // Child contructor!
statisch
statisch allgemeiner Zweck Es besteht darin, Funktionen oder Variablen zu ändern, um sie zu Klassenfunktionen und Klassenvariablen zu machen. Sie können auch Variablen innerhalb von Funktionen ändern, um ihren Lebenszyklus auf den Lebenszyklus der gesamten Anwendung auszudehnen. Aber seine Assoziation mit sich selbst ist eine neue Verwendung, die seit PHP 5.3 eingeführt wurde: statisches verzögertes Binden.
Mit der statischen verzögerten Bindungsfunktion von static kann die zugehörige Klasse zur Laufzeit dynamisch bestimmt werden. Zum Beispiel:
class Base { public function __construct() { echo "Base constructor!", PHP_EOL; } public static function getSelf() { return new self(); } public static function getInstance() { return new static(); } public function selfFoo() { return self::foo(); } public function staticFoo() { return static::foo(); } public function thisFoo() { return $this->foo(); } public function foo() { echo "Base Foo!", PHP_EOL; } } class Child extends Base { public function __construct() { echo "Child constructor!", PHP_EOL; } public function foo() { echo "Child Foo!", PHP_EOL; } } $base = Child::getSelf(); $child = Child::getInstance(); $child->selfFoo(); $child->staticFoo(); $child->thisFoo();
Das Ausgabeergebnis lautet wie folgt:
In Funktionsreferenzen ist der Unterschied zwischen self und static:
Für statische Memberfunktionen zeigt self auf die aktuelle Klasse des Codes, static zeigt auf die aufrufende Klasse für nicht statische Memberfunktionen, self unterdrückt Polymorphismus und zeigt auf die Funktion der aktuellen Klasse , static ist äquivalent dazu und dynamisch zeigt auf die Funktion der aufrufenden Klasse.
Die drei Schlüsselwörter parent, self und static sind sehr interessant, wenn sie zusammen betrachtet werden. Sie verweisen auf die übergeordnete Klasse, die aktuelle Klasse bzw. die Unterklasse, die eine Art „Vergangenheit, Gegenwart und Zukunft“ haben „Geschmack.
dieses
selbst und dies sind die am meisten diskutierten und am wahrscheinlichsten missbrauchten Kombinationen.
Die Hauptunterschiede zwischen den beiden sind wie folgt:
1 Dies kann nicht in statischen Mitgliedsfunktionen verwendet werden,
2. Variablen, Es wird empfohlen, self anstelle von $this:: oder $this->;
3 zu verwenden. Um auf nicht statische Mitgliedsvariablen zuzugreifen, kann self nicht verwendet werden, sondern nur this;
4. Dies sollte verwendet werden, wenn das Objekt instanziiert wurde. Selbst unterliegt dieser Einschränkung nicht aktuelle Klasse; dies bezieht sich auf den Aufruf der Override-Funktion der Klasse (falls vorhanden).
Der Zweck des SelbstNachdem Sie die Unterschiede zu den oben genannten drei Schlüsselwörtern gelesen haben, ist der Zweck des Selbst sofort offensichtlich? Um es in einem Satz zusammenzufassen: self zeigt immer auf „die aktuelle Klasse (und Klasseninstanz)“. Die Details sind:
1. Ersetzen Sie den Klassennamen und beziehen Sie sich auf die statischen Mitgliedsvariablen und statischen Funktionen der aktuellen Klasse.
2. Unterdrücken Sie polymorphes Verhalten und beziehen Sie sich auf die Funktionen der aktuellen Klasse Klasse statt Unterklassen. Implementierung mittlerer Abdeckung;
Empfohlene verwandte Artikel und Tutorials:
php-TutorialDas obige ist der detaillierte Inhalt vonDetaillierte Erklärung zur Verwendung des Schlüsselworts self in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!