Maison >développement back-end >Problème PHP >Quelles sont les différences entre static, self et $this en PHP ?
Les différences entre static, self et $this en PHP sont : 1. [$this] représente une référence à l'objet, écrite dans une méthode non statique dans la classe 2. Self est différent de ; ceci, il pointe vers la classe elle-même, ne pointe vers aucun objet instancié ; 3. static est généralement utilisé pour accéder aux variables statiques et aux méthodes statiques dans une classe.
Les différences entre static, self et $this en php sont :
1. la référence de l'objet $this est écrite dans une méthode non statique de la classe. Lorsque la classe est instanciée, celui qui appelle la méthode (généralement un appel d'objet) $this représente une référence à l'objet. $this
<?php class Person { public $name; public function getName() { echo $this->name; } } $p = new Person(); $p2 = new Person(); $p->name = "小红"; $p2->name = "小明"; $p->getName(); // 小红 $p2->getName(); // 小明2
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 les méthodes statiques d'une classe sont également des méthodes écrites dans la classe. La classe dans laquelle self est écrit indique la référence de la classe self
<?php class 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(); // 小明3,
Généralement utilisé Pour accéder aux variables statiques et aux méthodes statiques dans une classe, ce sont aussi des méthodes écrites dans la classe. C'est aussi la classe qui appelle la méthode static signifie que la classe (quelle classe est liée) static
<?php class A { public function say() { echo "Hello"; } public function saySelf() { //static 和 self 可以调用非静态方法 不能调用非静态属性 静态方法中不能有$this // static 和 self 可以写在非静态的方法中 ,可以使用对象调用 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
. Recommandations d'apprentissage associées :
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!