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!