Nepastāvošās īpašības lasīšana OOP PHP

Mēģināsim ierakstīt datus nepastāvošā īpašībā - tas darbosies:

index.php<?php
  $test = new Test;
  
  $test->prop3 = 3; // ierakstīs 3
  echo $test->prop3; // izvadīs 3
?>

Pieņemsim, ka mēs negribam atļaut rakstīt nepastāvošajās īpašībās. Un vispār, gribam atļaut ierakstīšanu tikai īpašībās prop1 un prop2.

To ir viegli izdarīt - pietiek metodē __set pievienot atbilstošu nosacījumu:

Test.php<?php
  class Test
  {
    private $prop1;
    private $prop2;
    
    public function __set($property, $value)
    {
      // Uzrakstīsim nosacījumu:
      if ($property == 'prop1' or $property == 'prop2') {
        $this->$property = $value;
      }
    }
    
    public function __get($property)
    {
      return $this->$property;
    }
  }
?>

Ja šādu īpašību būs daudz, tad nav īpaši ērti uzskaitīt tās visas nosacījumā.

Ierakstīsim atļautās ierakstīšanai īpašības massīvā un pārbaudīsim īpašības esamību šajā massīvā ar funkcijas in_array palīdzību:

Test.php<?php
  class Test
  {
    private $prop1;
    private $prop2;
    
    public function __set($property, $value)
    {
      $properties = ['prop1', 'prop2']; // atļautās īpašības
      
      if (in_array($property, $properties)) {
        $this->$property = $value;
      }
    }
    
    public function __get($property)
    {
      return $this->$property;
    }
  }
?>