Olematu omaduse lugemine OOP-s PHP-s

Eelmises õppetükis toodud näites rakendasime magilist meetodit __get privaatsetele omadustele pääsemise püüdmiseks. Tegelikult võib see meetod olla kasulik ka püüdmiseks pöördumistele olematute omaduste poole.

Vaatame praktilist näidet. Olgu meil klass User nime ja perekonnanimega, mis on avalikud omadused:

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

Teeme nii, et klassi objekt käituks nagu tal oleks ka omadus full, mis kuvab kasutaja ees- ja perekonnanime. Kasutame selleks meie maagilist meetodit __get:

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

Kontrollime:

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

Tehke klass Date avalike omadustega year, month ja day. Kasutades magiat, tehke omadus weekDay, mis tagastab nädalapäeva, vastavalt kuupäevale.