Olematoman ominaisuuden lukeminen OOP:ssa PHP:ssä
Edellisessä oppitunnissa esitetyssä esimerkissä sovelsimme
__get -metodin taikaa yksityisiin ominaisuuksiin
viitatessa. Itse asiassa tämä metodi
voi olla hyödyllinen myös otettaessa kiinni
viittauksia olematomiin ominaisuuksiin.
Katsotaan käytännön esimerkkiä. Olkoon
meillä luokka User, jolla on sukunimi ja
etunimi, jotka ovat julkisia
ominaisuuksia:
<?php
class User
{
public $surn;
public $name;
}
?>
Tehdään niin, että luokan olio
käyttäytyy kuin sillä olisi myös ominaisuus
full, joka tulostaa käyttäjän etu- ja sukunimen.
Käytetään tähän taikametodiamme
__get:
<?php
class User
{
public $surname;
public $name;
public $patronymic;
public function __get($property)
{
if ($property == 'full') {
return $this->surn . ' ' . $this->name;
}
}
}
?>
Testataan:
<?php
$user = new User;
$user->surn = 'john';
$user->name = 'smit';
echo $user->full; // tulostaa 'john smit'
?>
Tee luokka Date, jolla on julkiset ominaisuudet
year, month ja day.
Taian avulla tee ominaisuus weekDay,
joka palauttaa päivämäärää vastaavan
viikonpäivän.