PHP-ի ՕՕՊ-ում գոյություն չունեցող հատկության ընթերցում
Փորձենք գրել տվյալներ գոյություն չունեցող հատկության մեջ - սա կաշխատի.
<?php
$test = new Test;
$test->prop3 = 3; // գրենք 3
echo $test->prop3; // կարտածի 3
?>
Ենթադրենք, մենք չենք ուզում թույլատրել գրել
գոյություն չունեցող հատկություններում: Եվ, ընդհանրապես, ուզում ենք
թույլատրել գրել միայն prop1
և prop2 հատկություններում:
Սա հեշտ է անել - բավական է __set մեթոդում
ավելացնել համապատասխան պայման.
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Գրենք պայման.
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Եթե նման հատկությունները շատ լինեն, ապա այնքան էլ հարմար չէ դրանք բոլորը թվարկել պայմանում:
Եկեք գրենք գրելու համար թույլատրված հատկությունները
մասիվի մեջ և ստուգենք հատկության առկայությունը
այդ մասիվում in_array ֆունկցիայի միջոցով.
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // թույլատրված հատկությունները
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>