⊗ppMVDFmCn 28 of 35 menu

PHP-дегі MVC фреймворкіміздегі Контроллерлер

Сіз білетіндей, біздің фреймворкіміздің барлық контроллерлерінде render әдісі бар, ол деректерді көрініске жіберу үшін қажет. Бұл әдіс біздің, пайдаланушы контроллерлері ядрода орналасқан аталық Controller класынан мұра етеді. Мына класты жасайық:

<?php namespace Core; class Controller { protected function render($view, $data) { } } ?>

Көріп тұрғаныңыздай, render әдісі параметр ретінде көрініс атауын және көрсету үшін қажет деректерді қабылдайды. Бұл әдіс деректерді көрсету әрекетінің көрінісі туралы ақпарат болатын арнайы Page класының нысанын қайтарсын. Бұл класта көрініс атауы, деректер, сонымен қатар бет тайтлы және сайттың макеты бар файл атауы болады:

<?php namespace Core; class Page { private $layout; private $title; private $view; private $data; public function __construct($layout, $title, $view, $data) { $this->layout = $layout; $this->title = $title; $this->view = $view; $this->data = $data; } public function __get($property) { return $this->$property; } } ?>

Сонда біздің render әдісіміздің коды мынадай болады:

<?php namespace Core; class Controller { protected $layout = 'default'; protected function render($view, $data) { return new Page($this->layout, $this->title, $view, $data); } } ?>

Мұнда не болып жатқанын түсіндірейін. Көрініс атауы және деректер әдіс параметрлері ретінде келеді. Алайда, пайдаланушы контроллерінде тағы да бет тайтлы беріледі - title қасиетіне жазу арқылы. Демек, $this->title-та Page класының конструкторына беретін тайтл болады.

Сондай-ақ, лэйаутпен байланысты нюанстар бар. Сіз білетіндей, біздің фреймворкіміз default.php файлындағы лэйаутты қолданады. Шын мәнінде, әрбір әрекеттің басқа лэйауты болуы мүмкін. Ол үшін әрекеттің өзінде layout қасиетіне басқа лэйаут атауын жазу керек.

Бұл қалай жүзеге асады: біздің аталық контроллердің layout қасиеті бар, әдепкі бойынша 'default.php' мәніне ие. Бұл әдепкі лэйаут болады. Алайда, егер пайдаланушы контроллерінің әрекеті layout қасиетінің мәнін өзгертсе, онда лэйаут та басқаша болады.

Менің Controller класымның кодын көшіріп алып, оны /core/Controller.php файлына орналастырыңыз.

Менің Page класымның кодын көшіріп алып, оны /core/Page.php файлына орналастырыңыз.

Қазақ
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 файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау