Het lezen van niet-bestaande eigenschappen in OOP in PHP
Laten we proberen gegevens naar een niet-bestaande eigenschap te schrijven - dit zal werken:
<?php
$test = new Test;
$test->prop3 = 3; // schrijven we 3
echo $test->prop3; // geeft 3 weer
?>
Stel dat we niet willen toestaan dat er naar
niet-bestaande eigenschappen wordt geschreven. En, in het algemeen, willen we
alleen schrijven naar de eigenschappen prop1
en prop2 toestaan.
Dit is eenvoudig te doen - het is voldoende om in de methode __set
de bijbehorende voorwaarde toe te voegen:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Laten we een voorwaarde schrijven:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Als er veel van dergelijke eigenschappen zijn, dan is het niet erg handig om ze allemaal in de voorwaarde op te sommen.
Laten we de toegestane eigenschappen om naar te schrijven
in een array zetten en de aanwezigheid van de eigenschap
in deze array controleren met de functie
in_array:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // toegestane eigenschappen
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>