Membaca Sifat Tidak Wujud dalam OOP dalam PHP
Mari kita cuba menulis data ke dalam sifat tidak wujud - ini akan berfungsi:
<?php
$test = new Test;
$test->prop3 = 3; // tulis 3
echo $test->prop3; // akan papar 3
?>
Katakan kita tidak mahu membenarkan penulisan ke dalam
sifat tidak wujud. Dan, secara umum, kita mahu
hanya membenarkan penulisan ke dalam sifat prop1
dan prop2.
Ini mudah dilakukan - memadai dengan menambah
syarat yang sepadan dalam kaedah __set:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Tulis syarat:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Jika terdapat banyak sifat sedemikian, adalah tidak sangat mudah untuk menyenaraikan kesemuanya dalam syarat.
Mari kita tulis sifat yang dibenarkan untuk ditulis
ke dalam array dan semak kewujudan sifat
dalam array tersebut menggunakan fungsi
in_array:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // sifat yang dibenarkan
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>