PHP-те ООЖ-де сипаттарды сиқыр арқылы алу
Келесі сиқырлы әдіс, біз қарастыратын,
__get деп аталады. Бұл
әдіс жеке немесе қорғалған сипаттың мәнін
оқуға әрекет кезінде іске қосылады.
Егер __get әдісін кейбір сыныпта
енгізсек, онда барлық жоқ
немесе жасырын сипаттарға жүргізілген сілтемелер
осы әдіс арқылы өңделетін болады.
Бұл ретте PHP автоматты түрде сұралған сипаттың атауын осы әдістің бірінші параметріне беріп жібереді, ал осы әдіс арқылы қайтарылған мән сипаттың мәні ретінде қабылданады, оған сілтеме жүргізілді.
Қалай жұмыс істейтіні әлі түсінікті емес шығар,
сондықтан тәжірибелік мысалды қарастырайық. Бізде Test сыныбы болсын, онда жеке және жалпыға болатын
сипаттар бар:
<?php
class Test
{
public $prop1 = 1; // жалпыға болатын сипат
private $prop2 = 2; // жеке сипат
}
?>
Біздің сыныбымызға __get сиқырлы әдісін
қосайық, ол бастапқыда жай ғана
сілтеме жүргізілген сипаттың атауын қайтарады:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // жай сипат атауын қайтарамыз
}
}
?>
Жасалған сиқырлы әдістің жұмысын тексерейік. Үш түрлі сипатқа сілтейік: жалпыға болатын сипатқа, жеке сипатқа және жоқ сипатқа:
<?php
$test = new Test;
// Жалпыға болатын сипатқа сілтейміз:
echo $test->prop1; // 1 шығарады - яғни сипаттың мәні
// Жеке сипатқа сілтейміз:
echo $test->prop2; // 'prop2' шығарады - сипат атауы
// Жоқ сипатқа сілтейміз:
echo $test->prop3; // 'prop3' шығарады - сипат атауы
?>
Көріп отырғаныңыздай, біздің сиқырлы әдісіміз жеке және жоқ сипаттарға сілтемелерге реакция береді, бірақ жалпыға болатын сипаттарға сілтемелерді елемейді - олар бұрынғыдай жұмыс істей береді.