Čítanie neexistujúcej vlastnosti v OOP v PHP

V príklade uvedenom v predchádzajúcej lekcii sme aplikovali mágiu metódy __get na odchytávanie prístupu k súkromným vlastnostiam. V skutočnosti táto metóda môže byť užitočná aj na odchytávanie prístupov k neexistujúcim vlastnostiam.

Pozrime sa na praktický príklad. Nech máme triedu User s menom a priezviskom, ktoré sú verejnými vlastnosťami:

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

Urobme to tak, aby sa objekt triedy správal tak, ako keby mal tiež vlastnosť full, ktorá vypisuje meno a priezvisko používateľa. Použime na to našu magickú metódu __get:

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

Skontrolujme:

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

Urobte triedu Date s verejnými vlastnosťami year, month a day. Pomocou mágie urobte vlastnosť weekDay, ktorá bude vracať deň v týždni, zodpovedajúci dátumu.