Leitura de propriedades inexistentes em POO no PHP

No exemplo apresentado na lição anterior, aplicamos a mágica do método __get para capturar o acesso a propriedades privadas. Na verdade, este método também pode ser útil para capturar acessos a propriedades inexistentes.

Vejamos um exemplo prático. Suponha que temos uma classe User com nome e sobrenome, que são propriedades públicas:

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

Vamos fazer com que o objeto da classe se comporte como se também tivesse uma propriedade full, que retorna o nome completo do usuário. Usaremos para isso nosso método mágico __get:

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

Vamos testar:

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

Crie uma classe Date com as propriedades públicas year, month e day. Usando a mágica, crie uma propriedade weekDay, que retornará o dia da semana correspondente à data.