Sobes.tech
Junior

Quelle est la différence entre les mots-clés self et this en PHP?

sobes.tech IA

Réponse de l'IA

$this fait référence à l'instance courante de l'objet. self fait référence à la classe courante (dans un contexte statique ou à l'intérieur de méthodes pour accéder aux membres statiques).

$this:

  • Utilisé pour accéder aux propriétés et méthodes d'une instance spécifique de la classe.
  • S'applique dans les méthodes non statiques.
class MyClass {
    public $instanceProperty = 'Bonjour';

    public function getInstanceProperty() {
        // Accès à la propriété de l'instance courante
        return $this->instanceProperty;
    }
}

self:

  • Utilisé pour accéder aux propriétés et méthodes statiques de la classe.
  • S'applique dans les méthodes statiques et non statiques.
class MyClass {
    public static $staticProperty = 'Monde';

    public static function getStaticProperty() {
        // Accès à la propriété statique
        return self::$staticProperty;
    }

    public function accessStaticFromInstance() {
        // Accès à la propriété statique depuis une méthode non statique
        return self::$staticProperty;
    }
}

Exemple d'utilisation conjointe de $this et self:

class Example {
    public $instanceId;
    private static $count = 0;

    public function __construct() {
        // Utilisation de self pour augmenter le compteur statique
        self::$count++;
        // Utilisation de $this pour définir la propriété de l'instance
        $this->instanceId = self::$count;
    }

    public static function getCount() {
        // Utilisation de self pour obtenir la propriété statique
        return self::$count;
    }

    public function getInstanceId() {
        // Utilisation de $this pour obtenir la propriété de l'instance
        return $this->instanceId;
    }
}