Čtení neexistující vlastnosti v OOP v PHP

V příkladu uvedeném v předchozí lekci jsme použili magii metody __get pro zachycení přístupu k soukromým vlastnostem. Ve skutečnosti tato metoda může být také užitečná pro zachycení přístupů k neexistujícím vlastnostem.

Podívejme se na praktickém příkladu. Nechť máme třídu User s příjmením a jménem, které jsou veřejné vlastnosti:

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

Udělejme to, aby se objekt třídy choval tak, jako by měl také vlastnost full, která vypisuje jméno a příjmení uživatele. Použijeme k tomu naši magickou metodu __get:

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

Ověřme:

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

Vytvořte třídu Date s veřejnými vlastnostmi year, month a day. Pomocí magie vytvořte vlastnost weekDay, která bude vracet den v týdnu odpovídající datu.