Đọc thuộc tính không tồn tại trong OOP trong PHP
Trong ví dụ được đưa ra ở bài học trước, chúng ta đã áp dụng phép màu của phương thức
__get để bắt các truy cập vào
thuộc tính riêng tư. Trên thực tế, phương thức này
cũng có thể hữu ích để bắt
các truy cập vào các thuộc tính không tồn tại.
Hãy xem một ví dụ thực tế. Giả sử
chúng ta có lớp User với tên và
họ, là các thuộc tính
công khai:
<?php
class User
{
public $surn;
public $name;
}
?>
Hãy làm sao cho đối tượng của lớp
có hành vi như thể nó cũng có thuộc tính
full, hiển thị tên đầy đủ của người dùng.
Hãy sử dụng phương thức ma thuật
__get của chúng ta cho việc này:
<?php
class User
{
public $surname;
public $name;
public $patronymic;
public function __get($property)
{
if ($property == 'full') {
return $this->surn . ' ' . $this->name;
}
}
}
?>
Hãy kiểm tra:
<?php
$user = new User;
$user->surn = 'john';
$user->name = 'smit';
echo $user->full; // sẽ hiển thị 'john smit'
?>
Tạo lớp Date với các thuộc tính công khai
year, month và day.
Sử dụng phép màu để tạo thuộc tính weekDay,
thuộc tính này sẽ trả về thứ trong tuần tương ứng
với ngày tháng.