Добијање својстава кроз магију у ООП у PHP
Следећа магична метода коју ћемо
размотрити назива се __get. Ова
метода се активира при покушају читања вредности
приватног или заштићеног својства.
Ако имплементирамо методу __get у неком
класу, тада ће сви приступи непостојећим
или скривеним својствима бити обрађивани
том методом.
При томе ће PHP аутоматски прослеђивати име траженог својства у први параметар ове методе, а вредност коју ова метода врати ће бити тумачена као вредност својства којем се приступило.
Вероватно засад није баш јасно како ово
функционише, па хајде да погледамо на практичном
примеру. Нека имамо овакав клас
Test са приватним и јавним
својствима:
<?php
class Test
{
public $prop1 = 1; // јавно својство
private $prop2 = 2; // приватно својство
}
?>
Хајде да додамо у наш клас магичну методу
__get, која ће за почетк само
враћати име својства којем се приступило:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // једноставно вратимо име својства
}
}
?>
Хајде да проверимо рад креиране магичне методе. Приступимо три типа својстава: јавном својству, приватном и непостојећем:
<?php
$test = new Test;
// Приступамо јавном својству:
echo $test->prop1; // исписаће 1 - то јест вредност својства
// Приступамо приватном својству:
echo $test->prop2; // исписаће 'prop2' - име својства
// Приступамо непостојећем својству:
echo $test->prop3; // исписаће 'prop3' - име својства
?>
Као што видите, наша магична метода реагује на приступ приватним и непостојећим својствима, али игнорише приступ јавним - она раде онако како су и раније радила.