⊗ppMVDFmCn 28 of 35 menu

Кантролеры ў сваім MVC фрэймворку на PHP

Як вы ўжо ведаеце, усе кантролеры нашага фрэймворка маюць метад 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 для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць