Het lezen van niet-bestaande eigenschappen in OOP in PHP

Laten we proberen gegevens naar een niet-bestaande eigenschap te schrijven - dit zal werken:

index.php<?php
  $test = new Test;
  
  $test->prop3 = 3; // schrijven we 3
  echo $test->prop3; // geeft 3 weer
?>

Stel dat we niet willen toestaan dat er naar niet-bestaande eigenschappen wordt geschreven. En, in het algemeen, willen we alleen schrijven naar de eigenschappen prop1 en prop2 toestaan.

Dit is eenvoudig te doen - het is voldoende om in de methode __set de bijbehorende voorwaarde toe te voegen:

Test.php<?php
  class Test
  {
    private $prop1;
    private $prop2;
    
    public function __set($property, $value)
    {
      // Laten we een voorwaarde schrijven:
      if ($property == 'prop1' or $property == 'prop2') {
        $this->$property = $value;
      }
    }
    
    public function __get($property)
    {
      return $this->$property;
    }
  }
?>

Als er veel van dergelijke eigenschappen zijn, dan is het niet erg handig om ze allemaal in de voorwaarde op te sommen.

Laten we de toegestane eigenschappen om naar te schrijven in een array zetten en de aanwezigheid van de eigenschap in deze array controleren met de functie in_array:

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