Lesen einer nicht vorhandenen Eigenschaft in OOP in PHP
Versuchen wir, Daten in eine nicht vorhandene Eigenschaft zu schreiben - das wird funktionieren:
<?php
$test = new Test;
$test->prop3 = 3; // schreiben wir 3
echo $test->prop3; // gibt 3 aus
?>
Nehmen wir an, wir möchten nicht erlauben, in
nicht vorhandene Eigenschaften zu schreiben. Und überhaupt möchten wir
das Schreiben nur in die Eigenschaften prop1
und prop2 erlauben.
Das ist einfach zu machen - es reicht aus, in der Methode __set
die entsprechende Bedingung hinzuzufügen:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Schreiben wir eine Bedingung:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Wenn es viele solcher Eigenschaften gibt, ist es nicht sehr praktisch, sie alle in der Bedingung aufzulisten.
Lassen Sie uns die zum Schreiben erlaubten Eigenschaften
in ein Array schreiben und das Vorhandensein der Eigenschaft
in diesem Array mit der Funktion
in_array überprüfen:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // erlaubte Eigenschaften
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>