Å lese en ikke-eksisterende egenskap i OOP i PHP
I eksemplet gitt i forrige leksjon, brukte vi magien fra metoden
__get for å fange opp referanser til
private egenskaper. Egentlig kan denne metoden
også være nyttig for å fange opp
referanser til ikke-eksisterende egenskaper.
La oss se på et praktisk eksempel. Anta at
vi har en klasse User med et fornavn og
et etternavn, som er offentlige
egenskaper:
<?php
class User
{
public $surn;
public $name;
}
?>
La oss gjøre slik at objektet av klassen
oppfører seg som om det også har en egenskap
full, som viser brukerens fornavn og etternavn.
Vi bruker vår magiske metode
__get for dette:
<?php
class User
{
public $surname;
public $name;
public $patronymic;
public function __get($property)
{
if ($property == 'full') {
return $this->surn . ' ' . $this->name;
}
}
}
?>
La oss teste:
<?php
$user = new User;
$user->surn = 'john';
$user->name = 'smit';
echo $user->full; // vil skrive ut 'john smit'
?>
Lag en klasse Date med offentlige egenskaper
year, month og day.
Bruk magi til å lage en egenskap weekDay,
som skal returnere ukedagen som tilsvarer
datoen.