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.





