Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung zur Verwendung des Schlüsselworts self in PHP

Detaillierte Erklärung zur Verwendung des Schlüsselworts self in PHP

王林
王林nach vorne
2020-01-13 17:44:162850Durchsuche

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:

Detaillierte Erklärung zur Verwendung des Schlüsselworts self in PHP

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 Selbst

Nachdem 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-Tutorial

Das 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen