Prenons un exemple :
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
Notez ici que la ligne get_class(Son::getStatic()); résumé comme suit :
self renvoie la classe dans laquelle se trouve le mot-clé new in new self. Par exemple, dans l'exemple ici :
public static function getSelf() { return new self(); // new 关键字在 Father 这里 }
renvoie toujours Father.
new static
static est un peu plus intelligent basé sur ce qui précède : static renverra la classe qui exécute new static(), par exemple, Son exécute get_class(Son : :getStatic()) renvoie Son, Father. L'exécution de get_class(Father::getStatic()) renvoie Father
En l'absence d'héritage, on peut considérer que new self et new static renvoient le même résultat. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!