Nepastāvošās īpašības lasīšana OOP PHP

Piemērā, kas dots iepriekšējā nodarbībā, mēs izmantojām burvju metodi __get, lai notvertu piekļūsti privātām īpašībām. Patiesībā šī metode var būt noderīga arī, lai notvertu piekļūsti nepastāvošām īpašībām.

Apskatīsim praktisku piemēru. Pieņemsim, ka mums ir klase User ar vārdu un uzvārdu, kas ir publiskas īpašības:

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

Padarīsim tā, lai klases objekts uzvestos tā, it kā tam būtu arī īpašība full, kas izvada lietotāja vārdu un uzvārdu. Izmantosim tam mūsu burvju metodi __get:

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

Pārbaudīsim:

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

Izveidojiet klasi Date ar publiskām īpašībām year, month un day. Ar burvju palīdzību izveidojiet īpašību weekDay, kura atgriezīs nedēļas dienu, kas atbilst datumam.