Citirea proprietăților inexistente în OOP în PHP
Să încercăm să scriem date într-o proprietate inexistentă - acest lucru va funcționa:
<?php
$test = new Test;
$test->prop3 = 3; // vom scrie 3
echo $test->prop3; // va afișa 3
?>
Să presupunem că nu vrem să permitem scrierea în
proprietăți inexistente. Și, în general, vrem
să permitem scrierea doar în proprietățile prop1
și prop2.
Acest lucru este ușor de făcut - este suficient să adăugăm
condiția corespunzătoare în metoda __set:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Să scriem condiția:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Dacă vor fi multe astfel de proprietăți, atunci nu este foarte convenabil să le enumerăm pe toate în condiție.
Să scriem proprietățile permise pentru scriere
într-un array și să verificăm prezența proprietății
în acest array cu ajutorul funcției
in_array:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // proprietăți permise
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>