⊗ppOpMgGP 88 of 107 menu

Атрыманне ўласцівасцяў праз магію ў ААП у 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' - імя ўласцівасці ?>

Як вы бачыце, наш магічны метад рэагуе на зварот да прыватных і неіснуючых уласцівасцяў, але ігнаруе зварот да публічных - яны працуюць так, як і працавалі раней.

azbydeenesfrkakkptruuz