Добивање на својства преку магија во ООП во 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' - името на својството
?>
Како што можете да видите, нашиот магичен метод реагира на пристап до приватни и непостоечки својства, но го игнорира пристапот до јавните - тие работат како што работеле и досега.