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 deisset()ouempty()sur une propriété inaccessible ou inexistante.__unset(string $name): Appelée lors de l'utilisation deunset()sur une propriété inaccessible ou inexistante.__serialize(): Appelée avant la sérialisation de l'objet avecserialize(). 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 avecunserialize(). 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, avececho). 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 avecvar_export(). Reçoit un tableau de propriétés de l'objet.__debugInfo(): Appelée lors de l'utilisation devar_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()