Nem létező tulajdonság olvasása OOP-ban PHP-ben
Próbáljunk meg adatot írni egy nem létező tulajdonságba - ez működni fog:
<?php
$test = new Test;
$test->prop3 = 3; // írjuk be a 3-at
echo $test->prop3; // kiírja a 3-at
?>
Tegyük fel, hogy nem akarjuk lehetővé tenni a nem
létező tulajdonságokba való írást. És általában csak
a prop1 és prop2
tulajdonságokba akarjuk engedélyezni az írást.
Ezt könnyű megtenni - elég a __set
metódusban hozzáadni a megfelelő feltételt:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Írjunk egy feltételt:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Ha sok ilyen tulajdonság lenne, akkor nem túl kényelmes mindet felsorolni a feltételben.
Írjuk be az írásra engedélyezett tulajdonságokat
egy tömbbe, és ellenőrizzük a tulajdonság
jelenlétét ebben a tömbben az
in_array függvény segítségével:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // engedélyezett tulajdonságok
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>