Īpašību iegūšana ar magiju OPHP PHP
Nākamā magiskā metode, ko mēs
apskatīsim, saucas __get. Šī
metode tiek izsaukta, mēģinot nolasīt vērtību
no privātas vai aizsargātas īpašības.
Ja klasē tiek implementēta metode __get, tad visi piekļūvumi neesošām
vai slēptām īpašībām tiks apstrādāti
ar šo metodi.
Šajā gadījumā PHP automātiski pārsūtīs pieprasītās īpašības nosaukumu pirmajā parametrā šīs metodes, un šīs metodes atgrieztā vērtība tiks uztverta kā īpašības vērtība, pie kuras tika piekļūts.
Iespējams, ka pagaidām nav īsti skaidrs, kā tas
strādā, tāpēc apskatīsim praktisku
piemēru. Pieņemsim, ka mums ir šāda klase
Test ar privātu un publisku
īpašību:
<?php
class Test
{
public $prop1 = 1; // publiska īpašība
private $prop2 = 2; // privāta īpašība
}
?>
Pievienosim mūsu klasei magisko metodi
__get, kas sākumā vienkārši
atgriezīs tās īpašības nosaukumu, pie kuras tika piekļūts:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // vienkārši atgriezīsim īpašības nosaukumu
}
}
?>
Pārbaudīsim izveidotās magiskās metodes darbību. Pieklūsim pie trim īpašību veidiem: pie publikas īpašības, pie privātās un pie neesošās:
<?php
$test = new Test;
// Pieklūstam pie publikas īpašības:
echo $test->prop1; // izvadīs 1 - tas ir, īpašības vērtību
// Pieklūstam pie privātās īpašības:
echo $test->prop2; // izvadīs 'prop2' - īpašības nosaukums
// Pieklūstam pie neesošās īpašības:
echo $test->prop3; // izvadīs 'prop3' - īpašības nosaukums
?>
Kā redzat, mūsu magiskā metode reaģē uz piekļūšanu privātām un neesošām īpašībām, bet ignorē piekļūšanu publiskajām - tās strādā tā, kā strādāja iepriekš.