Neegzistuojančios savybės skaitymas OOP PHP

Pavyzdyje, pateiktame ankstesnėje pamokoje, mes taikėme magiškąjį metodą __get privacioms savybėms aptikti. Tiesą sakant, šis metodas taip pat gali būti naudingas aptikti kreipimusi į neegzistuojančias savybes.

Pažiūrėkime į praktinį pavyzdį. Tarkime, kad turime klasę User su vardu ir pavarde, kurie yra viešos savybės:

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

Padarykime taip, kad klasės objektas elgtųsi taip, tarsi jis taip pat turėtų savybę full, kuri išveda vartotojo vardą ir pavardę. Naudokime tam mūsų magiškąjį metodą __get:

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

Patikrinkime:

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

Sukurkite klasę Date su viešosiomis savybėmis year, month ir day. Naudodami magiją, sukurkite savybę weekDay, kuri grąžintų savaitės dieną, atitinkančią datą.