Phương thức __unset
Phương thức __unset là một trong những phương thức ma thuật trong PHP. Nó được tự động gọi khi cố gắng xóa một thuộc tính không tồn tại hoặc không thể truy cập của đối tượng bằng hàm unset. Phương thức nhận một tham số - tên của thuộc tính đang cố gắng xóa.
Cú pháp
public function __unset(string $name): void
Ví dụ
Tạo một lớp với phương thức ma thuật __unset và thử xóa một thuộc tính không tồn tại:
<?php
class MyClass {
private $data = ['a' => 1, 'b' => 2];
public function __unset($name) {
echo "Đang cố gắng xóa '$name'\n";
unset($this->data[$name]);
}
}
$obj = new MyClass();
unset($obj->a);
unset($obj->c);
?>
Kết quả thực thi mã:
Đang cố gắng xóa 'a'
Đang cố gắng xóa 'c'
Ví dụ
Sử dụng __unset để kiểm soát quyền truy cập vào các thuộc tính riêng tư:
<?php
class User {
private $email = 'user@example.com';
public function __unset($name) {
if ($name === 'email') {
throw new Exception("Không thể xóa thuộc tính riêng tư 'email'");
}
}
}
$user = new User();
unset($user->email);
?>
Kết quả thực thi mã:
Exception: Không thể xóa thuộc tính riêng tư 'email'