Membaca Properti yang Tidak Ada di OOP dalam PHP
Mari kita coba menulis data ke dalam properti yang tidak ada - ini akan berhasil:
<?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:
<?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:
<?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;
}
}
?>