Phương thức ma thuật __set

Phương thức ma thuật __set tự động được gọi khi cố gắng gán giá trị cho một thuộc tính không tồn tại hoặc không thể truy cập trong ngữ cảnh hiện tại. Phương thức nhận hai tham số: tên thuộc tính và giá trị đang cố gắng gán.

Cú pháp

phppublic function __set(string $name, mixed $value): void

Ví dụ

Tạo một lớp sử dụng __set để chặn các nỗ lực thiết lập thuộc tính không tồn tại:

php<?php
  class User {
    private $data = [];
    
    public function __set($name, $value) {
      $this->data[$name] = $value;
    }
    
    public function getData() {
      return $this->data;
    }
  }
  
  $user = new User();
  $user->email = 'test@example.com';
  $user->age = 25;
  print_r($user->getData());
?>

Kết quả thực thi mã:

phpArray
(
  [email] => test@example.com
  [age] => 25
)

Ví dụ

Sử dụng __set để xác thực dữ liệu trước khi thiết lập chúng:

php<?php
  class Product {
    private $price;
    
    public function __set($name, $value) {
      if ($name === 'price') {
        if (!is_numeric($value) || $value < 0) {
          throw new Exception('Giá trị giá không hợp lệ');
        }
        $this->price = $value;
      }
    }
    
    public function getPrice() {
      return $this->price;
    }
  }
  
  $product = new Product();
  $product->price = 100;
  echo $product->getPrice();
?>

Kết quả thực thi mã:

php100

Xem thêm

  • phương thức ma thuật __get,
    chặn các nỗ lực đọc thuộc tính không thể truy cập
  • phương thức ma thuật __isset,
    chặn việc kiểm tra sự tồn tại của thuộc tính