Чтение несуществующего свойства в ООП в PHP

В примере, приведенном в предыдущем уроке, мы применяли магию метода __get для отлавливания обращения к приватным свойствам. На самом деле этот метод также может быть полезен для отлавливания обращений к несуществующим свойствам.

Посмотрим на практическом примере. Пусть у нас есть класс User с именем и фамилией, являющимися публичными свойствами:

User.php<?php
  class User
  {
    public $surn;
    public $name;
  }
?>

Давайте сделаем так, чтобы объект класса вел себя так, будто у него также есть свойство full, выводящее имя и фамилию юзера. Используем для этого наш магический метод __get:

User.php<?php
  class User
  {
    public $surname;
    public $name;
    public $patronymic;
    
    public function __get($property)
    {
      if ($property == 'full') {
        return $this->surn . ' ' . $this->name;
      }
    }
  }
?>

Проверим:

index.php<?php
  $user = new User;
  
  $user->surn = 'john';
  $user->name = 'smit';
  
  echo $user->full; // выведет 'john smit'
?>
Задание 1

Сделайте класс Date с публичными свойствами year, month и day. С помощью магии сделайте свойство weekDay, которое будет возвращать день недели, соответствующий дате.