Čitanje nepostojećeg svojstva u OOP-u u PHP-u
Pokušajmo da upišemo podatke u nepostojeće svojstvo - ovo će raditi:
<?php
$test = new Test;
$test->prop3 = 3; // upisaćemo 3
echo $test->prop3; // ispisaće 3
?>
Recimo da ne želimo da dozvolimo upis u
nepostojeća svojstva. I, uopšte, želimo da
dozvolimo upis samo u svojstva prop1
i prop2.
To je lako uraditi - dovoljno je u metodu __set
dodati odgovarajući uslov:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Napišimo uslov:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Ako takvih svojstava bude mnogo, onda nije baš praktično nabrajati ih sve u uslovu.
Zabeležimo dozvoljena svojstva za upis
u niz i proverimo postojanje svojstva
u tom nizu pomoću funkcije
in_array:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // dozvoljena svojstva
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>