Heim  >  Artikel  >  Backend-Entwicklung  >  PHPs neues statisches und neues Selbst

PHPs neues statisches und neues Selbst

藏色散人
藏色散人nach vorne
2019-09-26 09:18:122481Durchsuche

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

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 这里
}

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!

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