Citirea proprietăților inexistente în OOP în PHP
În exemplul dat în lecția precedentă, am aplicat magia metodei
__get pentru a intercepta accesarea
proprietăților private. De fapt, această metodă
poate fi utilă și pentru a intercepta
accesările la proprietăți inexistente.
Să analizăm un exemplu practic. Să presupunem că
avem clasa User cu numele și
prenumele, care sunt proprietăți
publice:
<?php
class User
{
public $surn;
public $name;
}
?>
Să facem ca obiectul clasei
se comporte ca și cum ar avea și proprietatea
full, care afișează numele și prenumele utilizatorului.
Vom folosi pentru aceasta metoda noastră magică
__get:
<?php
class User
{
public $surname;
public $name;
public $patronymic;
public function __get($property)
{
if ($property == 'full') {
return $this->surn . ' ' . $this->name;
}
}
}
?>
Să testăm:
<?php
$user = new User;
$user->surn = 'john';
$user->name = 'smit';
echo $user->full; // va afișa 'john smit'
?>
Creați clasa Date cu proprietățile publice
year, month și day.
Folosind magia, creați proprietatea weekDay,
care va returna ziua săptămânii corespunzătoare
datei.