Čtení neexistující vlastnosti v OOP v PHP
V příkladu uvedeném v předchozí lekci jsme použili magii metody
__get pro zachycení přístupu k
soukromým vlastnostem. Ve skutečnosti tato metoda
může být také užitečná pro zachycení
přístupů k neexistujícím vlastnostem.
Podívejme se na praktickém příkladu. Nechť
máme třídu User s příjmením a
jménem, které jsou veřejné
vlastnosti:
<?php
class User
{
public $surn;
public $name;
}
?>
Udělejme to, aby se objekt třídy
choval tak, jako by měl také vlastnost
full, která vypisuje jméno a příjmení uživatele.
Použijeme k tomu naši magickou metodu
__get:
<?php
class User
{
public $surname;
public $name;
public $patronymic;
public function __get($property)
{
if ($property == 'full') {
return $this->surn . ' ' . $this->name;
}
}
}
?>
Ověřme:
<?php
$user = new User;
$user->surn = 'john';
$user->name = 'smit';
echo $user->full; // vypíše 'john smit'
?>
Vytvořte třídu Date s veřejnými vlastnostmi
year, month a day.
Pomocí magie vytvořte vlastnost weekDay,
která bude vracet den v týdnu odpovídající
datu.