Метод __unset

Методът __unset е един от магическите методи в PHP. Той се извиква автоматично, когато се опитват да изтрият несъществуващо или недостъпно свойство на обект с помощта на функцията unset. Методът приема един параметър - името на свойството, което се опитват да изтрият.

Синтаксис

phppublic function __unset(string $name): void

Пример

Нека създадем клас с магически метод __unset и опитаме да изтрием несъществуващо свойство:

php<?php
class MyClass {
  private $data = ['a' => 1, 'b' => 2];
  
  public function __unset($name) {
    echo "Опит за изтриване на '$name'\n";
    unset($this->data[$name]);
  }
}

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

Резултат от изпълнението на кода:

phpОпит за изтриване на 'a'
Опит за изтриване на 'c'

Пример

Използване на __unset за контрол на достъпа до частни свойства:

php<?php
class User {
  private $email = 'user@example.com';
  
  public function __unset($name) {
    if ($name === 'email') {
      throw new Exception("Не може да се изтрие частно свойство 'email'");
    }
  }
}

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

Резултат от изпълнението на кода:

phpException: Не може да се изтрие частно свойство 'email'

Вижте също

  • метод __set,
    който се извиква при запис в недостъпно свойство
  • метод __get,
    който се извиква при четене на недостъпно свойство
  • метод __isset,
    който се извиква при проверка за съществуване на недостъпно свойство