Die Verwendung des Schlüsselworts self in PHP ist: 1. Ersetzen Sie den Klassennamen und verweisen Sie auf die statischen Mitgliedsvariablen und statischen Funktionen der aktuellen Klasse. 2. Unterdrücken Sie polymorphes Verhalten und verweisen Sie auf die Funktionen der aktuellen Klasse Klasse statt sie in der Unterklassenrealisierung zu überschreiben. self zeigt immer auf die aktuelle Klasse (und Klasseninstanz).
Verwendung:
self zeigt immer auf „die aktuelle Klasse (und Klasseninstanz)“.
Detaillierte Einführung:
1. Ersetzen Sie den Klassennamen und referenzieren Sie die statischen Mitgliedsvariablen und statischen Funktionen der aktuellen Klasse.
2. Unterdrücken Sie polymorphes Verhalten und referenzieren Sie die Funktionen der aktuellen Klasse. Anstelle der in der Unterklasse behandelten Implementierung verwenden wir im Folgenden Beispiele zum Vergleich mit parent , static und this.
parentDie 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). Beispielsweise wird der Konstruktor der übergeordneten Klasse im Konstruktor aufgerufen:
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!
static Der allgemeine Zweck besteht darin, die Funktion oder Variable zu ändern, um sie zu einer Klassenfunktion zu machen und Klassenvariable, und es kann auch geändert werden. Variablen innerhalb einer Funktion verlängern ihren Lebenszyklus auf den Lebenszyklus der gesamten Anwendung. Aber seine Assoziation mit sich selbst ist eine neue Verwendung, die seit PHP 5.3 eingeführt wurde: statische verzögerte Bindung.
Mit der statischen verzögerten Bindungsfunktion von static kann die zugehörige Klasse zur Laufzeit dynamisch bestimmt werden. 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();
Die Programmausgabe lautet wie folgt:
In Bezug auf Funktionsreferenzen ist der Unterschied zwischen self und static: für statische Mitgliedsfunktionen , self zeigt auf die aktuelle Codeklasse, static zeigt auf die aufrufende Klasse; für nicht statische Mitgliedsfunktionen unterdrückt self den Polymorphismus und zeigt auf die Mitgliedsfunktion der aktuellen Klasse, static ist äquivalent dazu und dynamisch zeigt auf die Funktion von die aufrufende Klasse.
Weitere Informationen zu diesem Thema finden Sie auf der
chinesischen PHP-WebsiteDas obige ist der detaillierte Inhalt vonWas ist die Verwendung des Schlüsselworts self in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!