Kaedah __unset
Kaedah __unset adalah salah satu kaedah ajaib dalam PHP. Ia dipanggil secara automatik apabila cuba memadam sifat objek yang tidak wujud atau tidak boleh diakses menggunakan fungsi unset. Kaedah ini menerima satu parameter - nama sifat yang cuba dipadam.
Sintaks
public function __unset(string $name): void
Contoh
Mari buat kelas dengan kaedah ajaib __unset dan cuba padam sifat yang tidak wujud:
<?php
class MyClass {
private $data = ['a' => 1, 'b' => 2];
public function __unset($name) {
echo "Attempting to unset '$name'\n";
unset($this->data[$name]);
}
}
$obj = new MyClass();
unset($obj->a);
unset($obj->c);
?>
Keputusan pelaksanaan kod:
Attempting to unset 'a'
Attempting to unset 'c'
Contoh
Menggunakan __unset untuk mengawal akses kepada sifat peribadi:
<?php
class User {
private $email = 'user@example.com';
public function __unset($name) {
if ($name === 'email') {
throw new Exception("Cannot unset private property 'email'");
}
}
}
$user = new User();
unset($user->email);
?>
Keputusan pelaksanaan kod:
Exception: Cannot unset private property 'email'