Heim >Backend-Entwicklung >PHP-Problem >Was ist die Verwendung des Schlüsselworts self in PHP?

Was ist die Verwendung des Schlüsselworts self in PHP?

王林
王林Original
2020-06-30 09:50:243168Durchsuche

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).

Was ist die Verwendung des Schlüsselworts self in PHP?

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.

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). 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

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:

Was ist die Verwendung des Schlüsselworts self in PHP?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-Website

.

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

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