Чытанне неіснуючай уласцівасці ў ААП у PHP

Давайце паспрабуем запісаць дадзеныя ў неіснуючую ўласцівасць - гэта будзе працаваць:

index.php<?php
  $test = new Test;
  
  $test->prop3 = 3; // запишем 3
  echo $test->prop3; // выведет 3
?>

Хай мы не хочам дазваляць запісваць у неіснуючыя ўласцівасці. І, наогул, хочам дазволіць запіс толькі ў уласцівасці prop1 і prop2.

Гэта лёгка зрабіць - дастаткова ў метадзе __set дадаць адпаведную ўмову:

Test.php<?php
  class Test
  {
    private $prop1;
    private $prop2;
    
    public function __set($property, $value)
    {
      // Напишем условие:
      if ($property == 'prop1' or $property == 'prop2') {
        $this->$property = $value;
      }
    }
    
    public function __get($property)
    {
      return $this->$property;
    }
  }
?>

Калі такіх уласцівасцей будзе шмат, то не вельмі зручна пералічваць іх усё ў умове.

Давайце запішам дазволеныя для запісу ўласцівасці у масіў і будзем правяраць наяўнасць уласцівасці у гэтым масіве з дапамогай функцыі in_array:

Test.php<?php
  class Test
  {
    private $prop1;
    private $prop2;
    
    public function __set($property, $value)
    {
      $properties = ['prop1', 'prop2']; // дазволеныя ўласцівасці
      
      if (in_array($property, $properties)) {
        $this->$property = $value;
      }
    }
    
    public function __get($property)
    {
      return $this->$property;
    }
  }
?>