Différence entre self et this en PHP
La différence entre self et this en POO PHP est la suivante : les classes PHP peuvent avoir des méthodes statiques et des variables statiques. Déclarer des méthodes ou des variables statiques les rend accessibles sans recourir à une instance de classe ou à un objet.
Les fonctions statiques et les variables dans les classes ne sont associées à aucun objet, mais à la définition de la classe elle-même. Vous pouvez dire que toutes les instances d’une classe partagent la même variable statique et les mêmes fonctions.
Dans la définition d’une classe, « $this » se réfère à l’objet actuel, tandis que « self » se réfère à la classe actuelle.
« self » n’est pas précédé par « $ » car « self » ne représente pas une variable mais la classe elle-même. « $this » fait référence à une variable spécifique de sorte qu’elle ait un préfixe $.
Il est nécessaire de faire référence à un élément de classe en utilisant « self » et de se référer à un élément d’objet en utilisant « $this », utilisez $this->var
pour les variables non statiques, utilisez self::$var
pour les variables statiques et idem pour les méthodes.
Exemple:
class MaClasse { public $var; public static $svar; public function rfunction() { echo $this->var; } public static function sfunction() { echo self::$svar; } } MaClasse::$svar = "Hello World!"; $obj = new MaClasse(); $obj->var = "Welcome"; echo MaClasse::sfunction(); echo $obj->rfunction();
Remarque
- Les fonctions statiques ne peuvent utiliser que des variables statiques. La manière dont les fonctions statiques et les variables statiques sont référencées est
self::maFunction()
ouself::maVariable
. - Les fonctions et les variables d’une classe nécessitent la référence d’un objet.