Maison > Article > développement back-end > Explication détaillée de la différence entre self et $this en PHP
La programmation orientée objet (POO, Object Oriented Programming) est désormais devenue une compétence de base pour les programmeurs. L'utilisation d'idées POO pour la programmation avancée de PHP est très utile pour améliorer les capacités de programmation PHP et planifier l'architecture de développement Web.
Ici, je parle principalement de la différence entre ceci et les mots-clés personnels. Littéralement compris, il fait référence à cela et à soi-même. Permettez-moi d'abord de donner une explication préliminaire. Il s'agit d'un pointeur vers l'objet actuel (peut être considéré comme un pointeur en C), et self est un pointeur vers la classe actuelle. Nous utilisons fréquemment des pointeurs pour décrire ici.
Parce que j'utilise souvent des frameworks, je ne connais pas certains des mécanismes de fonctionnement et méthodes sous-jacents de PHP, j'aime donc étudier ces choses sous-jacentes récemment, même si les choses que j'écris ne sont pas très bonnes. , mais je l'ai fait étape par étape par moi-même, et c'est plus facile à comprendre maintenant. La plupart des informations sur Internet sont soit copiées du manuel et sont très officielles, soit c'est le même article. pour comprendre, donc je ne peux le faire que moi-même. Venez vous familiariser avec
1. self
1.self peut accéder aux propriétés statiques et aux méthodes statiques de cette classe, et peut y accéder. les propriétés statiques et les méthodes statiques de la classe parent. Lorsque vous utilisez self, vous n'avez pas besoin d'instancier
class self_test { static$instance; publicfunction __construct(){ self::$instance = 'instance';//静态属性只能通过self来访问 } publicfunction tank(){ return self::$instance;//访问静态属性 } } $str = new self_test(); echo$str->tank();
Sortie de page : instance
class self_test { static$instance; publicfunction __construct(){ self::$instance = 'dell'; } staticpublicfunction pentium(){ return self::$instance;//静态方法也可以继续访问静态变量,访问时需要加$ } publicfunction tank(){ return self::pentium();//访问静态方法pentium() } } $str = new self_test(); echo$str->tank();<.>
2.self peut accéder aux constantes définies par const
class self_test { const NAME = 'tancy'; publicfunction tank(){ return self::NAME; } } $str = new self_test(); echo$str->tank();
class self_test { public$public; private$private; protected$protected; publicfunction __construct(){ $this->public = 'public'; $this->private = 'private'; $this->protected = 'protected'; } publicfunction tank(){ return$this->public; } publicfunction dell(){ return$this->private; } publicfunction datesrt(){ return$this->protected; } } $str = new self_test(); echo$str->tank(); echo"</br>"; echo$str->dell(); echo"</br>"; echo$str->datesrt();
privée
protégée
一句话,self是引用静态类的类名,而$this是引用非静态类的实例名。Recommandations associées :
Explication approfondie de php self et tutoriel $this_PHP
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!