Læsning af ikke-eksisterende egenskab i OOP i PHP
I eksemplet vist i den forrige lektion anvendte vi magien fra metoden
__get til at fange henvisninger til
private egenskaber. Faktisk kan denne metode
også være nyttig til at fange
henvisninger til ikke-eksisterende egenskaber.
Lad os se på et praktisk eksempel. Antag
at vi har en klasse User med efternavn og
fornavn, som er offentlige
egenskaber:
<?php
class User
{
public $surn;
public $name;
}
?>
Lad os gøre det sådan, at objektet af klassen
opfører sig som om det også har en egenskab
full, der viser brugerens fornavn og efternavn.
Vi bruger vores magiske metode
__get til dette:
<?php
class User
{
public $surname;
public $name;
public $patronymic;
public function __get($property)
{
if ($property == 'full') {
return $this->surn . ' ' . $this->name;
}
}
}
?>
Lad os teste:
<?php
$user = new User;
$user->surn = 'john';
$user->name = 'smit';
echo $user->full; // vil udskrive 'john smit'
?>
Lav en klasse Date med offentlige egenskaber
year, month og day.
Brug magi til at lave egenskaben weekDay,
som vil returnere ugedagen, der svarer til
datoen.