PHPs neues statisches und neues Selbst

藏色散人
Freigeben: 2023-04-07 13:10:02
nach vorne
2552 Leute haben es durchsucht

Nehmen wir ein Beispiel:

class Father {
    public static function getSelf() {
        return new self();
    }
    public static function getStatic() {
        return new static();
    }
}
class Son extends Father {}
echo get_class(Son::getSelf()); // Father
echo get_class(Son::getStatic()); // Son
echo get_class(Father::getSelf()); // Father
echo get_class(Father::getStatic()); // Father
Nach dem Login kopieren

new self

Beachten Sie hier, dass die Zeile get_class(Son::getStatic()); die Son-Klasse zurückgeben kann wie folgt zusammengefasst:

self gibt die Klasse zurück, in der sich das Schlüsselwort new in new self befindet. Im Beispiel hier:

public static function getSelf() {
    return new self(); // new 关键字在 Father 这里
}
Nach dem Login kopieren

gibt immer Father zurück.

new static

static ist basierend auf dem oben Gesagten etwas intelligenter: static gibt die Klasse zurück, die new static() ausführt. Son führt beispielsweise get_class(Son) aus : :getStatic()) gibt Son, Father zurück. Die Ausführung von get_class(Father::getStatic()) gibt Father

zurück. Ohne Vererbung kann davon ausgegangen werden, dass new self und new static das gleiche Ergebnis zurückgeben .

Das obige ist der detaillierte Inhalt vonPHPs neues statisches und neues Selbst. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:dmzfa
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage