Metóda __unset
Metóda __unset je jednou z magických metód v PHP. Automaticky sa volá, keď sa pokúšajú odstrániť neexistujúcu alebo nedostupnú vlastnosť objektu pomocou funkcie unset. Metóda prijíma jeden parameter - názov vlastnosti, ktorú sa pokúšajú odstrániť.
Syntax
public function __unset(string $name): void
Príklad
Vytvorme triedu s magickou metódou __unset a skúsme odstrániť neexistujúcu vlastnosť:
<?php
class MyClass {
private $data = ['a' => 1, 'b' => 2];
public function __unset($name) {
echo "Pokus o odstránenie '$name'\n";
unset($this->data[$name]);
}
}
$obj = new MyClass();
unset($obj->a);
unset($obj->c);
?>
Výsledok vykonania kódu:
Pokus o odstránenie 'a'
Pokus o odstránenie 'c'
Príklad
Použitie __unset na kontrolu prístupu k privátnym vlastnostiam:
<?php
class User {
private $email = 'user@example.com';
public function __unset($name) {
if ($name === 'email') {
throw new Exception("Nie je možné odstrániť privátnu vlastnosť 'email'");
}
}
}
$user = new User();
unset($user->email);
?>
Výsledok vykonania kódu:
Exception: Nie je možné odstrániť privátnu vlastnosť 'email'