Læsning af ikke-eksisterende egenskab i OOP i PHP

I eksemplet vist i den forrige lektion anvendte vi magien fra metoden __get til at fange henvisninger til private egenskaber. Faktisk kan denne metode også være nyttig til at fange henvisninger til ikke-eksisterende egenskaber.

Lad os se på et praktisk eksempel. Antag at vi har en klasse User med efternavn og fornavn, som er offentlige egenskaber:

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

Lad os gøre det sådan, at objektet af klassen opfører sig som om det også har en egenskab full, der viser brugerens fornavn og efternavn. Vi bruger vores magiske metode __get til dette:

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

Lad os teste:

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

Lav en klasse Date med offentlige egenskaber year, month og day. Brug magi til at lave egenskaben weekDay, som vil returnere ugedagen, der svarer til datoen.