Метод __unset
Методът __unset е един от магическите методи в PHP. Той се извиква автоматично, когато се опитват да изтрият несъществуващо или недостъпно свойство на обект с помощта на функцията unset. Методът приема един параметър - името на свойството, което се опитват да изтрият.
Синтаксис
public function __unset(string $name): void
Пример
Нека създадем клас с магически метод __unset и опитаме да изтрием несъществуващо свойство:
<?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);
?>
Резултат от изпълнението на кода:
Опит за изтриване на 'a'
Опит за изтриване на 'c'
Пример
Използване на __unset за контрол на достъпа до частни свойства:
<?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);
?>
Резултат от изпълнението на кода:
Exception: Не може да се изтрие частно свойство 'email'