Citirea proprietăților inexistente în OOP în PHP

În exemplul dat în lecția precedentă, am aplicat magia metodei __get pentru a intercepta accesarea proprietăților private. De fapt, această metodă poate fi utilă și pentru a intercepta accesările la proprietăți inexistente.

Să analizăm un exemplu practic. Să presupunem că avem clasa User cu numele și prenumele, care sunt proprietăți publice:

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

Să facem ca obiectul clasei se comporte ca și cum ar avea și proprietatea full, care afișează numele și prenumele utilizatorului. Vom folosi pentru aceasta metoda noastră magică __get:

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

Să testăm:

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

Creați clasa Date cu proprietățile publice year, month și day. Folosind magia, creați proprietatea weekDay, care va returna ziua săptămânii corespunzătoare datei.