Lecture d'une propriété inexistante en POO en PHP
Essayons d'écrire des données dans une propriété inexistante - cela fonctionnera :
<?php
$test = new Test;
$test->prop3 = 3; // écrivons 3
echo $test->prop3; // affichera 3
?>
Supposons que nous ne voulons pas autoriser l'écriture
dans les propriétés inexistantes. Et, en général, nous voulons
autoriser l'écriture seulement dans les propriétés prop1
et prop2.
C'est facile à faire - il suffit d'ajouter la condition
correspondante dans la méthode __set :
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Écrivons une condition :
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
S'il y a beaucoup de telles propriétés, ce n'est pas très pratique de toutes les énumérer dans la condition.
Mettons les propriétés autorisées pour l'écriture
dans un tableau et vérifions la présence de la propriété
dans ce tableau à l'aide de la fonction
in_array :
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // propriétés autorisées
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>