PHP да ООПда мавжуд булмаган хусусиятни ўқиш
Келинг, мавжуд булмаган хусусиятга маълумот ёзмаға ҳаракат қилайлик - бу ишлайди:
<?php
$test = new Test;
$test->prop3 = 3; // 3 ни ёзамиз
echo $test->prop3; // 3 ни чиқаради
?>
Фараз қилайлик, биз мавжуд булмаган хусусиятларга
ёзувга рухсат бермоқчи эмасмиз. Ва, умуман, фақат
prop1 ва prop2 хусусиятларигагина
ёзувга рухсат бермоқчимиз.
Буни қилиш осон - __set усулида
мос шартни қўшиш кифоя:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Шартни ѕзамиз:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Агар бундай хусусиятлар кўп бўлса, у ҳолда уларни шартда санаб чиқиш жуда қулай бўлмайди.
Келинг, ёзишга рухсат берилган хусусиятларни
массивга ёзиб оламиз ва хусусиятнинг шу массивда
мавжудлигини in_array функцияси ёрдамида
текширамиз:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // рухсат берилган хусусиятлар
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>