Lettura di una proprietà inesistente in OOP in PHP
Nell'esempio fornito nella lezione precedente, abbiamo applicato la magia del metodo
__get per intercettare l'accesso alle
proprietà private. In realtà, questo metodo
può essere utile anche per intercettare
accessi a proprietà inesistenti.
Osserviamo un esempio pratico. Supponiamo
di avere una classe User con nome e
cognome, che sono proprietà
pubbliche:
<?php
class User
{
public $surn;
public $name;
}
?>
Facciamo in modo che l'oggetto della classe
si comporti come se avesse anche una proprietà
full, che restituisce il nome e il cognome dell'utente.
Usiamo a questo scopo il nostro metodo magico
__get:
<?php
class User
{
public $surname;
public $name;
public $patronymic;
public function __get($property)
{
if ($property == 'full') {
return $this->surn . ' ' . $this->name;
}
}
}
?>
Verifichiamo:
<?php
$user = new User;
$user->surn = 'john';
$user->name = 'smit';
echo $user->full; // restituirà 'john smit'
?>
Create una classe Date con le proprietà pubbliche
year, month e day.
Tramite la magia, create una proprietà weekDay,
che restituirà il giorno della settimana corrispondente
alla data.