Metode __unset
Metode __unset ir viena no maģiskajām metodēm PHP. Tā tiek automātiski izsaukta, kad mēģina dzēst neesošu vai nepieejamu objekta īpašību, izmantojot funkciju unset. Metode pieņem vienu parametru - nosaukumu īpašībai, kuru mēģina dzēst.
Sintakse
public function __unset(string $name): void
Piemērs
Izveidosim klasi ar maģisko metodi __unset un mēģināsim dzēst neesošu īpašību:
<?php
class MyClass {
private $data = ['a' => 1, 'b' => 2];
public function __unset($name) {
echo "Mēģina dzēst '$name'\n";
unset($this->data[$name]);
}
}
$obj = new MyClass();
unset($obj->a);
unset($obj->c);
?>
Koda izpildes rezultāts:
Mēģina dzēst 'a'
Mēģina dzēst 'c'
Piemērs
__unset izmantošana piekļuves kontrolei privātajām īpašībām:
<?php
class User {
private $email = 'user@example.com';
public function __unset($name) {
if ($name === 'email') {
throw new Exception("Nevar dzēst privāto īpašību 'email'");
}
}
}
$user = new User();
unset($user->email);
?>
Koda izpildes rezultāts:
Exception: Nevar dzēst privāto īpašību 'email'