Cet article présente principalement la différence entre cet autostatique en PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
Réimprimé de : https : / /blog.csdn.net/mrzhouxiaofei/article/details/78648079
J'étais récemment en train de concevoir des cours de génie logiciel et j'ai rencontré un problème. Je suis allé chercher le code source de Laravel et j'ai cherché à nouveau, et j'ai découvert que le problème était dû à un manque de compréhension approfondie de l'autostatique, je l'ai donc enregistré pour éviter de refaire la même erreur.
ceci est plus facile à comprendre. Il pointe vers l'objet actuel et est utilisé pour accéder aux variables non statiques et aux méthodes non statiques de l'objet actuel. object. Il est lié à l'objet. ;
<?phpclass Person { public $name; public function getName() { echo $this->name; } }$p = new Person();$p2 = new Person();$p->name = "小红";$p2->name = "小明";$p->getName(); // 小红$p2->getName(); // 小明
Dans l'exemple ci-dessus, deux objets sont nouveaux et les attributs de nom des objets sont définis respectivement. Ceci est utilisé dans getName() pour accéder au nom. attribut de l'objet actuel, donc les valeurs de nom sont respectivement affichées. Par conséquent, cela pointe vers l’objet actuel et ne pointe pas vers d’autres objets ou classes.
self est différent de cela. Il pointe vers la classe elle-même et ne pointe vers aucun objet instancié. Il est généralement utilisé pour accéder aux variables statiques et aux méthodes statiques de la classe ; 🎜>
<?phpclass Person { public static $name = "小红"; public static function getName() { echo self::$name; } }$p = new Person();$p2 = new Person();$p::getName(); // 小红$p2::getName(); // 小红$p::$name = "小明";$p::getName(); // 小明$p2::getName(); // 小明
liaison statique tardive . .
<?phpclass A { public function say() { echo "Hello"; } public function saySelf() { self::say(); } public function sayStatic() { static::say(); } }class B extends A { public function say() { echo "World"; } }$b = new B();$b->say(); // World$b->saySelf(); // Hello$b->sayStatic(); // World
liaison statique tardive .
Liaison statique tardiveRésumécela pointe vers l'objet actuel, utilisé pour accéder aux variables non statiques et aux méthodes non statiques de l'objet actuel self pointe vers la classe, généralement utilisé pour accéder aux variables statiques et aux méthodes statiques de la classe actuelle, la classe vers laquelle elle pointe a été déterminée avant l'exécution
static pointe vers la classe, généralement utilisée pour accéder aux variables statiques et aux méthodes statiques de ; la classe actuelle, mais
ne se limite pas à Un appel statique détermine à quelle classe il pointe au moment de l'exécution.
Explication détaillée des différences entre self, static et $this en PHP et liaison statique tardive
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!