Kry van eienskappe deur magie in OOP in PHP
Die volgende magiese metode wat ons sal
ondersoek, word genoem __get. Hierdie
metode word geaktiveer wanneer daar gepoog word om die waarde
van 'n private of beskermde eienskap te lees.
As die metode __get in enige
klas geïmplementeer word, sal alle toegang tot nie-bestaande
of verborge eienskappe deur
hierdie metode hanteer word.
PHP sal outomaties die naam van die versoekte eienskap in die eerste parameter van hierdie metode oordra, en die waarde wat deur hierdie metode teruggegee word, sal gesien word as die waarde van die eienskap waarna toegang verkry is.
Dit is seker nog nie baie duidelik hoe dit
werk nie, so laat ons kyk na 'n praktiese
voorbeeld. Kom ons sê ons het die volgende klas
Test met 'n private en 'n publieke
eienskap:
<?php
class Test
{
public $prop1 = 1; // publieke eienskap
private $prop2 = 2; // private eienskap
}
?>
Kom ons voeg die magiese metode
__get by ons klas, wat om te begin net
die naam van die eienskap sal teruggee, waarna toegang verkry is:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // gee net die eienskapnaam terug
}
}
?>
Kom ons toets die werking van die geskepte magiese metode. Ons sal toegang tot drie tipes eienskappe verkry: tot die publieke eienskap, tot die private eienskap en tot 'n nie-bestaande eienskap:
<?php
$test = new Test;
// Toegang tot die publieke eienskap:
echo $test->prop1; // sal 1 wys - dit is die waarde van die eienskap
// Toegang tot die private eienskap:
echo $test->prop2; // sal 'prop2' wys - die eienskapnaam
// Toegang tot 'n nie-bestaande eienskap:
echo $test->prop3; // sal 'prop3' wys - die eienskapnaam
?>
Soos jy kan sien, reageer ons magiese metode op toegang tot private en nie-bestaande eienskappe, maar ignoreer toegang tot publieke eienskappe - hulle werk soos voorheen.