Lettura di una proprietà inesistente in OOP in PHP

Nell'esempio fornito nella lezione precedente, abbiamo applicato la magia del metodo __get per intercettare l'accesso alle proprietà private. In realtà, questo metodo può essere utile anche per intercettare accessi a proprietà inesistenti.

Osserviamo un esempio pratico. Supponiamo di avere una classe User con nome e cognome, che sono proprietà pubbliche:

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

Facciamo in modo che l'oggetto della classe si comporti come se avesse anche una proprietà full, che restituisce il nome e il cognome dell'utente. Usiamo a questo scopo il nostro metodo magico __get:

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

Verifichiamo:

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

Create una classe Date con le proprietà pubbliche year, month e day. Tramite la magia, create una proprietà weekDay, che restituirà il giorno della settimana corrispondente alla data.