Att läsa icke-existerande egenskaper i OOP i PHP
I exemplet som gavs i föregående lektion använde vi magin med metoden
__get för att fånga upp försök till åtkomst av
privata egenskaper. I verkligheten kan denna metod
också vara användbar för att fånga upp
försök till åtkomst av icke-existerande egenskaper.
Låt oss titta på ett praktiskt exempel. Antag
att vi har klassen User med efternamn och
förnamn som publika
egenskaper:
<?php
class User
{
public $surn;
public $name;
}
?>
Låt oss göra så att objektet av klassen
uppför sig som om det också har en egenskap
full, som visar användarens för- och efternamn.
Vi använder vår magiska metod
__get för detta:
<?php
class User
{
public $surname;
public $name;
public $patronymic;
public function __get($property)
{
if ($property == 'full') {
return $this->surn . ' ' . $this->name;
}
}
}
?>
Låt oss testa:
<?php
$user = new User;
$user->surn = 'john';
$user->name = 'smit';
echo $user->full; // skriver ut 'john smit'
?>
Skapa klassen Date med publika egenskaper
year, month och day.
Med hjälp av magi, skapa egenskapen weekDay,
som ska returnera veckodagen som motsvarar
datumet.