Méthode __unset
La méthode __unset est l'une des méthodes magiques en PHP. Elle est automatiquement appelée lorsqu'on tente de supprimer une propriété inexistante ou inaccessible d'un objet en utilisant la fonction unset. La méthode accepte un paramètre - le nom de la propriété que l'on tente de supprimer.
Syntaxe
public function __unset(string $name): void
Exemple
Créons une classe avec la méthode magique __unset et essayons de supprimer une propriété inexistante :
<?php
class MyClass {
private $data = ['a' => 1, 'b' => 2];
public function __unset($name) {
echo "Tentative de suppression de '$name'\n";
unset($this->data[$name]);
}
}
$obj = new MyClass();
unset($obj->a);
unset($obj->c);
?>
Résultat de l'exécution du code :
Tentative de suppression de 'a'
Tentative de suppression de 'c'
Exemple
Utilisation de __unset pour contrôler l'accès aux propriétés privées :
<?php
class User {
private $email = 'user@example.com';
public function __unset($name) {
if ($name === 'email') {
throw new Exception("Impossible de supprimer la propriété privée 'email'");
}
}
}
$user = new User();
unset($user->email);
?>
Résultat de l'exécution du code :
Exception: Impossible de supprimer la propriété privée 'email'