Utilisez self:: ou __CLASS__ pour faire une référence statique à la classe actuelle, selon la classe dans laquelle la méthode actuelle est définie : l'utilisation de static:: n'est plus analysée dans la classe dans laquelle la méthode actuelle est définie, mais est calculé au moment de l'exécution réelle. Elle peut également être appelée « liaison statique » car elle peut être utilisée pour (mais sans s’y limiter) des appels à des méthodes statiques.
On m'a récemment posé une petite question dans les commentaires d'une vidéo : y a-t-il des considérations particulières lors du choix d'utiliser static au lieu de self ici ? Ou nous pouvons changer la question comme ceci :
Que sont exactement le nouveau statique et le nouveau soi de PHP ?
En fait, cela devrait être très clair si nous regardons 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
Notez cette ligne ici get_class(Son::getStatic());
renvoie la classe Son
, qui peut se résumer ainsi :
nouveau soi
1 .self
renvoie la classe dans laquelle se trouve le mot-clé new self
dans new
Par exemple, dans cet exemple :
public static function getSelf() { return new self(); // new 关键字在 Father 这里 }
. Father
Basé sur ce qui précède, c'est un peu plus intelligent : static
renverra la classe qui exécute static
, comme new static()
exécutant Son
Ce qui est renvoyé est get_class(Son::getStatic())
, Son
exécute Father
et ce qui est renvoyé est get_class(Father::getStatic())
Father
et new self
. renvoie le même résultat. new static
Analyse de la différence entre new self() et new static() en PHP
L'utilisation de soi et cela en PHP
ce soi en PHP La différence entre statique
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!