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
public 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
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ã:
Array
(
[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
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ã:
100