Nepastāvošās īpašības lasīšana OOP PHP
Mēģināsim ierakstīt datus nepastāvošā īpašībā - tas darbosies:
<?php
$test = new Test;
$test->prop3 = 3; // ierakstīs 3
echo $test->prop3; // izvadīs 3
?>
Pieņemsim, ka mēs negribam atļaut rakstīt
nepastāvošajās īpašībās. Un vispār, gribam
atļaut ierakstīšanu tikai īpašībās prop1
un prop2.
To ir viegli izdarīt - pietiek metodē __set
pievienot atbilstošu nosacījumu:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Uzrakstīsim nosacījumu:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Ja šādu īpašību būs daudz, tad nav īpaši ērti uzskaitīt tās visas nosacījumā.
Ierakstīsim atļautās ierakstīšanai īpašības
massīvā un pārbaudīsim īpašības esamību
šajā massīvā ar funkcijas
in_array palīdzību:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // atļautās īpašības
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>