Branje neobstoječe lastnosti v OOP v PHP

V primeru, predstavljenem v prejšnji lekciji, smo uporabili magično metodo __get za prestrezanje dostopa do zasebnih lastnosti. Pravzaprav lahko ta metoda prav tako pride prav za prestrezanje dostopov do neobstoječih lastnosti.

Poglejmo si praktični primer. Naj imamo razred User z imenom in priimkom, ki sta javni lastnosti:

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

Naredimo tako, da se bo objekt razreda obnašal, kot da ima tudi lastnost full, ki izpiše ime in priimek uporabnika. Za to uporabimo našo magično metodo __get:

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

Preverimo:

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

Naredite razred Date z javnimi lastnostmi year, month in day. Z magijo naredite lastnost weekDay, ki bo vrnila dan v tednu, ki ustreza datu.