Å lese en ikke-eksisterende egenskap i OOP i PHP
La oss prøve å skrive data til en ikke-eksisterende egenskap - dette vil fungere:
<?php
$test = new Test;
$test->prop3 = 3; // skriver 3
echo $test->prop3; // vil skrive ut 3
?>
La oss si at vi ikke vil tillate å skrive til
ikke-eksisterende egenskaper. Og generelt ønsker vi
kun å tillate skriving til egenskapene prop1
og prop2.
Dette er enkelt å gjøre - det er nok å legge til
tilsvarende betingelse i metoden __set:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// La oss skrive en betingelse:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Hvis det er mange slike egenskaper, blir det ikke veldig praktisk å liste dem alle opp i en betingelse.
La oss skrive de tillatte egenskapene for skriving
inn i en array og sjekke tilstedeværelsen av egenskapen
i denne arrayen ved hjelp av funksjonen
in_array:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // tillatte egenskaper
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>