Čitanje nepostojeće osobine u OOP u PHP-u

U primeru datom u prethodnoj lekciji, koristili smo magiju metode __get za hvatanje pristupa privatnim osobinama. U stvarnosti, ova metoda takođe može biti korisna za hvatanje pristupa nepostojećim osobinama.

Pogledajmo praktičan primer. Neka imamo klasu User sa imenom i prezimenom, koje su javne osobine:

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

Hajde da učinimo da se objekat klase ponaša kao da takođe ima osobinu full, koja ispisuje ime i prezime korisnika. Iskoristimo za ovo našu magičnu 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;
      }
    }
  }
?>

Proverimo:

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

Napravite klasu Date sa javnim osobinama year, month i day. Pomoću magije napravite osobinu weekDay, koja će vraćati dan u nedelji koji odgovara datu.