Omaduste hankimine maagia abil OOP-s PHP-s
Järgmine maagiline meetod, mida me
vaatame, on __get. See
meetod käivitub, kui proovite lugeda
private või protected omaduse väärtust.
Kui rakendada meetod __get mõnes
klassis, siis kõik pöördumised olematute
või peidetud omaduste poole töödeldakse
selle meetodi abil.
Samal ajal edastab PHP automaatselt taotletud omaduse nime selle meetodi esimese parameetrina ja selle meetodi poolt tagastatud väärtust võetakse kui omaduse väärtust, mille poole pöörduti.
Tõenäoliselt pole veel väga selge, kuidas see
töötab, nii et vaatame praktilist
näidet. Oletame, et meil on selline klass
Test private ja public
omadustega:
<?php
class Test
{
public $prop1 = 1; // avalik omadus
private $prop2 = 2; // private omadus
}
?>
Lisame oma klassi maagilise meetodi
__get, mis alguses lihtsalt
tagastab omaduse nime, mille poole pöörduti:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // lihtsalt tagastame omaduse nime
}
}
?>
Kontrollime loodud maagilise meetodi tööd. Pöördume kolme tüüpi omaduste poole: avaliku omaduse, private omaduse ja olematu omaduse poole:
<?php
$test = new Test;
// Pöördume avaliku omaduse poole:
echo $test->prop1; // väljastab 1 - see tähendab omaduse väärtuse
// Pöördume private omaduse poole:
echo $test->prop2; // väljastab 'prop2' - omaduse nimi
// Pöördume olematu omaduse poole:
echo $test->prop3; // väljastab 'prop3' - omaduse nimi
?>
Nagu näete, reageerib meie maagiline meetod pöördumistele private ja olematute omaduste poole, kuid ignoreerib pöördumisi avalike omaduste poole - need töötavad nii, nagu nad varem töötasid.