Чтение несуществующего свойства в ООП в PHP
В примере, приведенном в предыдущем уроке, мы применяли магию метода
__get для отлавливания обращения к
приватным свойствам. На самом деле этот метод
также может быть полезен для отлавливания
обращений к несуществующим свойствам.
Посмотрим на практическом примере. Пусть
у нас есть класс User с именем и
фамилией, являющимися публичными
свойствами:
<?php
class User
{
public $surn;
public $name;
}
?>
Давайте сделаем так, чтобы объект класса
вел себя так, будто у него также есть свойство
full, выводящее имя и фамилию юзера.
Используем для этого наш магический метод
__get:
<?php
class User
{
public $surname;
public $name;
public $patronymic;
public function __get($property)
{
if ($property == 'full') {
return $this->surn . ' ' . $this->name;
}
}
}
?>
Проверим:
<?php
$user = new User;
$user->surn = 'john';
$user->name = 'smit';
echo $user->full; // выведет 'john smit'
?>
Сделайте класс Date с публичными свойствами
year, month и day.
С помощью магии сделайте свойство weekDay,
которое будет возвращать день недели, соответствующий
дате.