Junior
Qu'est-ce que les méthodes magiques en PHP?
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 dans certaines circonstances. Leurs noms commencent par deux underscores (__).
Liste des principales méthodes magiques :
__construct(): Appelée lors de la création d’un nouvel objet.__destruct(): Appelée lors de la destruction d’un objet.__call($name, $arguments): Appelée lorsqu’on tente d’appeler une méthode inaccessible ou inexistante de l’objet.__callStatic($name, $arguments): Appelée lorsqu’on tente d’appeler une méthode statique inaccessible ou inexistante.__get($name): Appelée lorsqu’on tente d’obtenir la valeur d’une propriété inaccessible de l’objet.__set($name, $value): Appelée lorsqu’on tente de définir la valeur d’une propriété inaccessible de l’objet.__isset($name): Appelée lors de l’utilisation deisset()ouempty()sur une propriété inaccessible.__unset($name): Appelée lors de l’utilisation deunset()sur une propriété inaccessible.__sleep(): Appelée avant la sérialisation, retourne un tableau des noms des propriétés à sérialiser.__wakeup(): Appelée après la désérialisation.__toString(): Permet à l’objet de se comporter comme une chaîne lors de son utilisation dans un contexte de chaîne.__invoke($args): Appelée lorsque le script tente d’invoquer l’objet comme une fonction.__set_state(array $properties): Appelée lors de l’exportation d’un objet avec la fonctionvar_export().__clone(): Appelée après la fin du clonage de l’objet pour configurer la copie.__serialize(): Appelée lors de la sérialisation, retourne un tableau de données à sérialiser.__unserialize(array $data): Appelée lors de la désérialisation, reçoit les données de__serialize().
Exemple d’utilisation de __construct et __destruct :
<?php
class Example {
public function __construct() {
echo "Objet créé\n";
}
public function __destruct() {
echo "Objet détruit\n";
}
}
$obj = new Example();
unset($obj); // Détruit l’objet de force
?>
Exemple d’utilisation de __get et __set :
<?php
class DataStore {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return null; // Ou lancer une exception
}
}
$store = new DataStore();
$store->name = "Alice"; // Appelle __set
echo $store->name; // Appelle __get
?>