Å lese en ikke-eksisterende egenskap i OOP i PHP

I eksemplet gitt i forrige leksjon, brukte vi magien fra metoden __get for å fange opp referanser til private egenskaper. Egentlig kan denne metoden også være nyttig for å fange opp referanser til ikke-eksisterende egenskaper.

La oss se på et praktisk eksempel. Anta at vi har en klasse User med et fornavn og et etternavn, som er offentlige egenskaper:

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

La oss gjøre slik at objektet av klassen oppfører seg som om det også har en egenskap full, som viser brukerens fornavn og etternavn. Vi bruker vår magiske metode __get for dette:

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

La oss teste:

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

Lag en klasse Date med offentlige egenskaper year, month og day. Bruk magi til å lage en egenskap weekDay, som skal returnere ukedagen som tilsvarer datoen.