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

phppublic 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<?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 :

phpTentative 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<?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 :

phpException: Impossible de supprimer la propriété privée 'email'

Voir aussi

  • la méthode __set,
    qui est appelée lors de l'écriture dans une propriété inaccessible
  • la méthode __get,
    qui est appelée lors de la lecture d'une propriété inaccessible
  • la méthode __isset,
    qui est appelée lors de la vérification de l'existence d'une propriété inaccessible