Metoda __unset
Metoda __unset je jednou z magických metod v PHP. Je automaticky volána, když se pokouší odstranit neexistující nebo nepřístupnou vlastnost objektu pomocí funkce unset. Metoda přijímá jeden parametr - název vlastnosti, kterou se pokouší odstranit.
Syntaxe
public function __unset(string $name): void
Příklad
Vytvoříme třídu s magickou metodou __unset a pokusíme se odstranit neexistující vlastnost:
<?php
class MyClass {
private $data = ['a' => 1, 'b' => 2];
public function __unset($name) {
echo "Pokus o odstranění '$name'\n";
unset($this->data[$name]);
}
}
$obj = new MyClass();
unset($obj->a);
unset($obj->c);
?>
Výsledek provedení kódu:
Pokus o odstranění 'a'
Pokus o odstranění 'c'
Příklad
Použití __unset pro kontrolu přístupu k privátním vlastnostem:
<?php
class User {
private $email = 'user@example.com';
public function __unset($name) {
if ($name === 'email') {
throw new Exception("Nelze odstranit privátní vlastnost 'email'");
}
}
}
$user = new User();
unset($user->email);
?>
Výsledek provedení kódu:
Exception: Nelze odstranit privátní vlastnost 'email'