PHPдеги ООПде __get силки менен касиеттерди алуу
Биз талкуулай турган кийинки силки метод
__get деп аталат. Бул метод
жашыруун же корголгон касиеттин маанисин
окууга аракет кылынганда ишке кирет.
Эгерде кайсыдыр бир класста __get методу
ишке ашырылса, анда бардык жок же жашырылган
касиеттерге кайрылуулар бул метод менен
иштелип чыгат.
Бул учурда PHP автоматтык түрдө суралган касиеттин атын бул методдун биринчи параметрине өткөрөт, ал эми бул метод тарабынан кайтарылган маани кайрылуу болгон касиеттин мааниси катары кабыл алынат.
Азырынча бул кандайча иштейт деп түшүнүү оор болушу мүмкүн,
ошондуктан практикалык мисалды карап көрөлү.
Бизде төмөнкүдөй Test класcы бар дейли,
анын ичинде жашыруун жана жалпыга ачык
касиеттери бар:
<?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'тү көрсөтөт - касиеттин аты
?>
Көрүп тургандай, биздин силки метод жашыруун жана жок касиеттерге кайрылууга жооп берет, бирок жалпыга ачык касиеттерге кайрылууну эске албайт - алар мурункудай эле иштей берүүдө.