⊗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ščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј