Les fonctions de self et de $this sont très similaires, mais elles sont différentes. $this ne peut pas faire référence à des membres statiques et à des constantes. self ressemble plus à la classe elle-même, et $this ressemble plus à l'instance elle-même.
1. self
1. self peut accéder aux propriétés statiques et aux méthodes statiques de cette classe et peut accéder Propriétés statiques et méthodes statiques dans la classe parent. Lorsque vous utilisez self, vous n'avez pas besoin d'instancier
<?php class selfStuP{ static $instance; public function __construct(){ self::$instance = 'instance'; //静态属性只能通过self来访问 } public function tank(){ return self::$instance; //访问静态属性 } } $str = new selfStuP(); echo $str->tank(); echo "\n"; ?>
Sortie de page : instance
<?php class selfStuP{ static $instance; public function __construct(){ self::$instance = 'dell'; //静态属性只能通过self来访问 } static public function pentium(){ return self::$instance; //静态方法也可以继续访问静态变量,访问时需 要加$ } public function tank(){ return self::pentium(); //访问静态属性 } } $str = new selfStuP(); echo $str->tank(); echo "\n"; ?>
Sortie de page : dell
<🎜. >2.self Vous pouvez accéder aux constantes définies par const
<?php class selfStuP{ const NAME = 'tancy'; public function tank(){ return self::NAME; } } $str = new selfStuP(); echo $str->tank(); echo "\n"; ?>
II.this
1.this peut appeler des méthodes et des attributs dans cette classe, et peut également appeler des méthodes et des attributs réglables dans la classe parent. On peut dire qu'à l'exception des constantes statiques et const, pratiquement tout le reste peut être contacté. en utilisant ceci
<?php class thisStu{ public $public; private $private; protected $protected; public function __construct(){ $this->public = 'public'; $this->private = 'private'; $this->protected = 'protected'; } public function tank(){ return $this->public; } public function dell(){ return $this->private; } public function datesrt(){ return $this->protected; } } $str = new thisStu(); echo $str->tank(); echo "\n"; echo $str->dell(); echo "\n"; echo $str->datesrt(); echo "\n"; ?>
privée
protégée
Résumé :
En une phrase, self est le nom de classe qui fait référence à la classe statique, et $this est le nom d'instance qui fait référence à la classe non statique.Recommandations associées :
Les différences entre self, static et $this en PHP et explication détaillée de la liaison statique tardive
Explication détaillée de l'utilisation de $this et des qualificatifs d'accès en PHP
Explication détaillée de la différence entre self et $this en 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!