არარსებული თვისების წაკითხვა OOP-ში 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;
}
}
?>