PHP-dä OOP-de ýok bolan aýratynlygy okamak

Bar bolmadyk aýratynlyga maglumat ýazmaga synanyşalyň - bu işler:

index.php<?php
  $test = new Test;
  
  $test->prop3 = 3; // 3 ýazalyň
  echo $test->prop3; // 3 çykarar
?>

Biz bar bolmadyk aýratynlyklara ýazmaga rugsat bermek islemeýäris. We, umuman, diňe prop1 we prop2 aýratynlyklaryna ýazmaga rugsat bermek isleýäris.

Muny etmek aňsat - __set usulynda degisli şerti goşmak ýeterlik:

Test.php<?php
  class Test
  {
    private $prop1;
    private $prop2;
    
    public function __set($property, $value)
    {
      // Şerti ýazalyň:
      if ($property == 'prop1' or $property == 'prop2') {
        $this->$property = $value;
      }
    }
    
    public function __get($property)
    {
      return $this->$property;
    }
  }
?>

Eger şeýle aýratynlyklar köp bolsa, onda olaryň hemmesini şertde sanamak oňat däl.

Geliň ýazmaga rugsat berlen aýratynlyklary massiwde ýazalyň we aýratynlygyň bolşyny in_array funksiýasy bilen barlalyň:

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