Att läsa icke-existerande egenskaper i OOP i PHP

I exemplet som gavs i föregående lektion använde vi magin med metoden __get för att fånga upp försök till åtkomst av privata egenskaper. I verkligheten kan denna metod också vara användbar för att fånga upp försök till åtkomst av icke-existerande egenskaper.

Låt oss titta på ett praktiskt exempel. Antag att vi har klassen User med efternamn och förnamn som publika egenskaper:

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

Låt oss göra så att objektet av klassen uppför sig som om det också har en egenskap full, som visar användarens för- och efternamn. Vi använder vår magiska metod __get för detta:

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

Låt oss testa:

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

Skapa klassen Date med publika egenskaper year, month och day. Med hjälp av magi, skapa egenskapen weekDay, som ska returnera veckodagen som motsvarar datumet.