Đọc thuộc tính không tồn tại trong OOP PHP
Hãy thử ghi dữ liệu vào một thuộc tính không tồn tại - điều này sẽ hoạt động:
<?php
$test = new Test;
$test->prop3 = 3; // ghi 3
echo $test->prop3; // sẽ xuất ra 3
?>
Giả sử chúng ta không muốn cho phép ghi vào
các thuộc tính không tồn tại. Và, nói chung, muốn
chỉ cho phép ghi vào các thuộc tính prop1
và prop2.
Điều này dễ dàng thực hiện - chỉ cần trong phương thức __set
thêm điều kiện tương ứng:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Viết điều kiện:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Nếu có nhiều thuộc tính như vậy, thì việc liệt kê tất cả chúng trong điều kiện không thực sự thuận tiện.
Hãy lưu các thuộc tính được phép ghi
vào một mảng và kiểm tra sự tồn tại của thuộc tính
trong mảng này bằng hàm
in_array:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // các thuộc tính được phép
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>