Metode __unset
Metode __unset adalah salah satu metode ajaib dalam PHP. Ini secara otomatis dipanggil ketika ada upaya untuk menghapus properti objek yang tidak ada atau tidak dapat diakses menggunakan fungsi unset. Metode ini menerima satu parameter - nama properti yang coba dihapus.
Sintaks
public function __unset(string $name): void
Contoh
Mari buat kelas dengan metode ajaib __unset dan coba hapus properti yang tidak ada:
<?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);
?>
Hasil eksekusi kode:
Attempting to unset 'a'
Attempting to unset 'c'
Contoh
Penggunaan __unset untuk mengontrol akses ke properti privat:
<?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);
?>
Hasil eksekusi kode:
Exception: Cannot unset private property 'email'