Добивање на својства преку магија во ООП во PHP

Следниот магичен метод, кој ќе го разгледаме, се вика __get. Овој метод се активира при обид за читање на вредноста на приватно или заштитено својство.

Ако се имплементира методот __get во некоја класа, тогаш сите пристапи до непостоечки или скриени својства ќе се обработуваат од овој метод.

Притоа PHP автоматски ќе го пренесува името на побараното својство во првиот параметар на овој метод, а вратената вредност од овој метод ќе се восприеме како вредност на својството до кое се пристапило.

Најверојатно сеуште не е многу јасно, како ова функционира, па затоа да погледнеме практичен пример. Нека имаме вакава класа Test со приватно и јавно својство:

Test.php<?php
  class Test
  {
    public  $prop1 = 1; // јавно својство
    private $prop2 = 2; // приватно својство
  }
?>

Да го додадеме во нашата класа магичниот метод __get, кој за почеток ќе биде едноставно го враќа името на својството, до кое се пристапило:

Test.php<?php
  class Test
  {
    public  $prop1 = 1;
    private $prop2 = 2;
    
    public function __get($property)
    {
      return $property; // едноставно го враќаме името на својството
    }
  }
?>

Да ја провериме работата на создадениот магичен метод. Да пристапиме до три типа на својства: до јавното својство, до приватното и до непостоечкото:

index.php<?php
  $test = new Test;
  
  // Пристапуваме до јавното својство:
  echo $test->prop1; // ќе испечати 1 - односно вредноста на својството
  
  // Пристапуваме до приватното својство:
  echo $test->prop2; // ќе испечати 'prop2' - името на својството
  
  // Пристапуваме до непостоечкото својство:
  echo $test->prop3; // ќе испечати 'prop3' - името на својството
?>

Како што можете да видите, нашиот магичен метод реагира на пристап до приватни и непостоечки својства, но го игнорира пристапот до јавните - тие работат како што работеле и досега.