Kusoma Sifa Isiyopo katika OOP kwenye PHP
Wacha tujaribu kuandika data kwenye sifa isiyopo - hii itafanya kazi:
<?php
$test = new Test;
$test->prop3 = 3; // tutaandika 3
echo $test->prop3; // itatoa 3
?>
Wacha tusitake kuruhusu kuandika kwenye
sifa zisizopo. Na, kwa ujumla, tunataka
kuruhusu uandishi tu kwenye sifa prop1
na prop2.
Hii inaweza kufanyika kwa urahisi - inatosha katika mbinu __set
kuongeza sharti linalofaa:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Tutaandika sharti:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Ikiwa kuna sifa nyingi kama hizi, basi sio rahisi sana kuziorodhesha zote kwenye sharti.
Wacha tuandike sifa zilizoruhusiwa kwa uandishi
kwenye safu na tuangalie uwepo wa sifa
kwenye safu hii kwa kutumia kitendo
in_array:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // sifa zilizoruhusiwa
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>