Хосияти мавҷуднабударо хондан дар ООП дар 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;
}
}
?>