Odczytywanie nieistniejącej właściwości w OOP w PHP

W przykładzie podanym w poprzedniej lekcji, zastosowaliśmy magię metody __get do przechwytywania odwołań do właściwości prywatnych. W rzeczywistości ta metoda może być również przydatna do przechwytywania odwołań do nieistniejących właściwości.

Spójrzmy na praktycznym przykładzie. Niech nasza klasa User ma nazwisko i imię, które są publicznymi właściwościami:

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

Zróbmy tak, aby obiekt klasy zachowywał się tak, jakby miał również właściwość full, wyświetlającą imię i nazwisko użytkownika. Wykorzystajmy do tego naszą magiczną metodę __get:

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

Sprawdźmy:

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

Stwórz klasę Date z publicznymi właściwościami year, month i day. Za pomocą magii stwórz właściwość weekDay, która będzie zwracać dzień tygodnia, odpowiadający dacie.