Pridobivanje lastnosti preko magije v OOP v PHP
Naslednja magična metoda, ki jo bomo
obravnavali, se imenuje __get. Ta
metoda se sproži ob poskusu branja vrednosti
zasebne ali zaščitene lastnosti.
Če implementiramo metodo __get v katerem koli
razredu, bodo vsi dostopi do neobstoječih
ali skritih lastnosti obravnavani
s to metodo.
Pri tem bo PHP samodejno posredoval ime zahtevane lastnosti v prvi parameter te metode, vrnjena vrednost te metode pa bo sprejeta kot vrednost lastnosti, ki je bila zahtevana.
Verjetno za zdaj še ni zelo jasno, kako to
deluje, zato poglejmo praktičen
primer. Naj imamo tak razred
Test z zasebno in javno
lastnostjo:
<?php
class Test
{
public $prop1 = 1; // javna lastnost
private $prop2 = 2; // zasebna lastnost
}
?>
Dodajmo našemu razredu magično metodo
__get, ki bo za začetek preprosto
vračala ime lastnosti, ki je bila zahtevana:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // preprosto vrnimo ime lastnosti
}
}
?>
Preverimo delovanje ustvarjene magične metode. Obrnimo se na tri tipe lastnosti: na javno lastnost, na zasebno in na neobstoječo:
<?php
$test = new Test;
// Obračamo se na javno lastnost:
echo $test->prop1; // izpiše 1 - to je vrednost lastnosti
// Obračamo se na zasebno lastnost:
echo $test->prop2; // izpiše 'prop2' - ime lastnosti
// Obračamo se na neobstoječo lastnost:
echo $test->prop3; // izpiše 'prop3' - ime lastnosti
?>
Kot vidite, naša magična metoda se odziva na dostop do zasebnih in neobstoječih lastnosti, vendar ignorira dostop do javnih - te delujejo tako, kot so delovale prej.