Membaca Properti yang Tidak Ada di OOP dalam PHP

Mari kita coba menulis data ke dalam properti yang tidak ada - ini akan berhasil:

index.php<?php
  $test = new Test;
  
  $test->prop3 = 3; // tulis 3
  echo $test->prop3; // akan menampilkan 3
?>

Misalkan kita tidak ingin mengizinkan penulisan ke properti yang tidak ada. Dan, secara umum, ingin mengizinkan penulisan hanya ke properti prop1 dan prop2.

Ini mudah dilakukan - cukup tambahkan kondisi yang sesuai dalam metode __set:

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

Jika ada banyak properti seperti itu, maka tidak terlalu nyaman untuk mendaftarkan semuanya dalam kondisi.

Mari kita tulis properti yang diizinkan untuk ditulis ke dalam array dan periksa keberadaan properti dalam array tersebut menggunakan fungsi in_array:

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