Sobes.tech
Junior

Quels méthodes magiques de classes connaissez-vous?

sobes.tech IA

Réponse de l'IA

Les méthodes magiques en PHP sont des méthodes spéciales qui sont appelées automatiquement lors de certains événements. Elles commencent par __ (double underscore).

Principales méthodes magiques :

  • __construct(): Appelée lors de la création d'une nouvelle instance de la classe. Utilisée pour initialiser l'objet.
  • __destruct(): Appelée lors de la suppression d'un objet ou à la fin du script. Utilisée pour libérer des ressources.
  • __call(string $name, array $arguments): Appelée lors de la tentative d'invoquer une méthode inaccessible ou inexistante.
  • __callStatic(string $name, array $arguments): Appelée lors de la tentative d'invoquer une méthode statique inaccessible ou inexistante.
  • __get(string $name): Appelée lors de la tentative d'accéder à une propriété inaccessible ou inexistante.
  • __set(string $name, mixed $value): Appelée lors de la tentative de définir une valeur à une propriété inaccessible ou inexistante.
  • __isset(string $name): Appelée lors de l'utilisation de isset() ou empty() sur une propriété inaccessible ou inexistante.
  • __unset(string $name): Appelée lors de l'utilisation de unset() sur une propriété inaccessible ou inexistante.
  • __serialize(): Appelée avant la sérialisation de l'objet avec serialize(). Renvoie un tableau de propriétés pour la sérialisation.
  • __unserialize(array $data): Appelée lors de la désérialisation de l'objet avec unserialize(). Reçoit un tableau de données pour restaurer les propriétés.
  • __toString(): Permet de traiter l'objet comme une chaîne. Appelée lors de la tentative d'affichage de l'objet en tant que chaîne (par exemple, avec echo). Doit retourner une chaîne.
  • __invoke(...$arguments): Permet de traiter l'objet comme une fonction. Appelée lors de la tentative d'invoquer l'objet comme une fonction.
  • __set_state(array $properties): Appelée lors de la restauration de l'objet avec var_export(). Reçoit un tableau de propriétés de l'objet.
  • __debugInfo(): Appelée lors de l'utilisation de var_dump() sur un objet. Doit retourner un tableau avec des informations pour le débogage.

Exemple d'utilisation de __construct et __toString :

<?php
class MyClass {
    private $name;

    public function __construct(string $name) {
        $this->name = $name;
    }

    public function __toString(): string {
        return "Objet avec le nom : " . $this->name;
    }
}

$obj = new MyClass("Test");
echo $obj; // Appellera __toString()

Exemple d'utilisation de __get et __set :

<?php
class MyClass {
    private $data = [];

    public function __set(string $name, mixed $value): void {
        $this->data[$name] = $value;
    }

    public function __get(string $name): mixed {
        if (array_key_exists($name, $this->data)) {
            return $this->data[$name];
        }
        return null; // Ou lancer une exception
    }
}

$obj = new MyClass();
$obj->prop1 = "Valeur 1"; // Appellera __set()
echo $obj->prop1; // Appellera __get()