Metoda __unset

Metoda __unset este una dintre metodele magice în PHP. Ea este apelată automat când se încearcă ștergerea unei proprietăți inexistente sau inaccesibile a unui obiect folosind funcția unset. Metoda primește un parametru - numele proprietății pe care se încearcă ștergerea.

Sintaxă

phppublic function __unset(string $name): void

Exemplu

Să creăm o clasă cu metoda magică __unset și să încercăm să ștergem o proprietate inexistentă:

php<?php
class MyClass {
  private $data = ['a' => 1, 'b' => 2];
  
  public function __unset($name) {
    echo "Attempting to unset '$name'\n";
    unset($this->data[$name]);
  }
}

$obj = new MyClass();
unset($obj->a);
unset($obj->c);
?>

Rezultatul executării codului:

phpAttempting to unset 'a'
Attempting to unset 'c'

Exemplu

Utilizarea __unset pentru controlul accesului la proprietăți private:

php<?php
class User {
  private $email = 'user@example.com';
  
  public function __unset($name) {
    if ($name === 'email') {
      throw new Exception("Cannot unset private property 'email'");
    }
  }
}

$user = new User();
unset($user->email);
?>

Rezultatul executării codului:

phpException: Cannot unset private property 'email'

Vezi și

  • metoda __set,
    care este apelată la scrierea într-o proprietate inaccesibilă
  • metoda __get,
    care este apelată la citirea unei proprietăți inaccesibile
  • metoda __isset,
    care este apelată la verificarea existenței unei proprietăți inaccesibile