Maison  >  Article  >  développement back-end  >  Explication détaillée de PHP new static et new self

Explication détaillée de PHP new static et new self

墨辰丷
墨辰丷original
2018-05-25 11:14:441204parcourir

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

<.> revient toujours

. Father

nouveau statique

2.

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

En l'absence d'héritage, on peut considérer que

et new self. renvoie le même résultat. new static

Conseils : Vous pouvez utiliser un bon IDE pour lire directement les commentaires. Par exemple, PhpStorm :

Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun.


Recommandations associées :

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn