⊗ppOpMgSP 91 of 107 menu

Запіс уласцівасцей праз магію ў ААП у PHP

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

Давайце паглядзім на практычным прыкладзе. Хай у нас дадзены вось такі клас Test:

<?php class Test { private $prop1; private $prop2; } ?>

Давайце зробім у гэтым класе магічны метад __set, які з дапамогай функцыі var_dump будзе выводзіць імя ўласцівасці, да якой адбыўся зварот, і значэнне, якое гэтай уласцівасці спрабуюць устанавіць:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { var_dump($property . ' ' .$value); } } ?>

Праверым працу нашага класа:

<?php $test = new Test; $test->prop = 'value'; // var_dump метаду __set выведе 'prop value' ?>

Давайце цяпер будзем устанаўліваць значэнне ўласцівасці, імя якой захоўваецца ў зменнай $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // устанаўліваем значэнне } } ?>

Цяпер мы зможам запісваць у прыватныя ўласцівасці звонку класа:

<?php $test = new Test; $test->prop1 = 1; // запішам 1 $test->prop2 = 2; // запішам 2 ?>

Запісваць мы можам, аднак, праверыць, запісалася лі туды што-небудзь - не, так як уласцівасці прыватныя.

Можна зрабіць гетэр для гэтых уласцівасцей альбо проста скарыстацца магічным метадам __get. Скарыстаемся другім варыянтам:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Магічны гетэр уласцівасцей: public function __get($property) { return $this->$property; } } ?>

Вось цяпер мы можам праверыць працу нашага класа. Праверым:

<?php $test = new Test; $test->prop1 = 1; // запішам 1 $test->prop2 = 2; // запішам 2 echo $test->prop1; // выведе 1 echo $test->prop2; // выведе 2 ?>

На самай справе, вядома ж, не варта дазваляць усім падшэў запісваць у прыватныя ўласцівасці, інакш прападае сэнс гэтых прыватных уласцівасцей (прасцей зрабіць іх публічнымі і ўсё).

Таму гэты метад варта ўжываць толькі тады, калі ў гэтым сапраўды ёсць неабходнасць. У наступных уроках мы яшчэ разгледзім прыклады ўдалага ўжывання.

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць