⊗ppMVDFmCn 28 of 35 menu

Controlere în cadrul propriului tău framework MVC în PHP

După cum știți deja, toate controlerele din framework-ul nostru au metoda render, care trebuie apelată pentru a trimite datele către view. Această metodă este moștenită de controlerele noastre, cele personalizate, de la clasa părinte Controller, aflată în nucleu. Să creăm această clasă:

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

După cum vedeți, metoda render primește ca parametru numele view-ului și datele pentru afișare. Să facem ca această metodă să returneze un obiect al unei clase speciale Page, în care vor fi conținute informații despre view-ul datelor acțiunii controlerului. În această clasă vor fi conținute numele view-ului, datele, precum și titlul paginii și numele fișierului cu layout-ul site-ului:

<?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; } } ?>

Atunci codul metodei noastre render va arăta astfel:

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

Să explic ce se întâmplă aici. Numele view-ului și datele vin ca parametri ai metodei. Cu toate acestea, în controlerul personalizat se mai setează și titlul paginii - prin scrierea proprietății title. Înseamnă că în $this->title va fi conținut titlul pe care îl vom transmite constructorului clasei Page.

Există și nuanțe cu layout-ul. După cum știți, framework-ul nostru folosește layout-ul din fișierul default.php. De fapt, fiecare acțiune poate avea și alt layout. Pentru aceasta este nevoie ca în acțiunea însăși, în proprietatea layout să se scrie un alt nume de layout.

Cum se realizează acest lucru: controlerul nostru părinte are proprietatea layout, care în mod implicit are valoarea 'default.php'. Acesta va fi layout-ul implicit. Cu toate acestea, dacă acțiunea controlerului personalizat redefește valoarea proprietății layout, atunci și layout-ul va fi altul.

Copiați codul clasei mele Controller și plasați-l în fișierul /core/Controller.php.

Copiați codul clasei mele Page și plasați-l în fișierul /core/Page.php.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge