Čitanje nepostojećeg svojstva u OOP-u u PHP-u

Pokušajmo da upišemo podatke u nepostojeće svojstvo - ovo će raditi:

index.php<?php
  $test = new Test;
  
  $test->prop3 = 3; // upisaćemo 3
  echo $test->prop3; // ispisaće 3
?>

Recimo da ne želimo da dozvolimo upis u nepostojeća svojstva. I, uopšte, želimo da dozvolimo upis samo u svojstva prop1 i prop2.

To je lako uraditi - dovoljno je u metodu __set dodati odgovarajući uslov:

Test.php<?php
  class Test
  {
    private $prop1;
    private $prop2;
    
    public function __set($property, $value)
    {
      // Napišimo uslov:
      if ($property == 'prop1' or $property == 'prop2') {
        $this->$property = $value;
      }
    }
    
    public function __get($property)
    {
      return $this->$property;
    }
  }
?>

Ako takvih svojstava bude mnogo, onda nije baš praktično nabrajati ih sve u uslovu.

Zabeležimo dozvoljena svojstva za upis u niz i proverimo postojanje svojstva u tom nizu pomoću funkcije in_array:

Test.php<?php
  class Test
  {
    private $prop1;
    private $prop2;
    
    public function __set($property, $value)
    {
      $properties = ['prop1', 'prop2']; // dozvoljena svojstva
      
      if (in_array($property, $properties)) {
        $this->$property = $value;
      }
    }
    
    public function __get($property)
    {
      return $this->$property;
    }
  }
?>