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

phppublic 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<?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ã:

phpĐ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<?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ã:

phpException: Không thể xóa thuộc tính riêng tư 'email'

Xem thêm

  • phương thức __set,
    được gọi khi ghi vào thuộc tính không thể truy cập
  • phương thức __get,
    được gọi khi đọc thuộc tính không thể truy cập
  • phương thức __isset,
    được gọi khi kiểm tra sự tồn tại của thuộc tính không thể truy cập