⊗ppMVDFmCn 28 of 35 menu

Controller nel proprio framework MVC in PHP

Come già sapete, tutti i controller del nostro framework hanno il metodo render, che deve essere chiamato per inviare i dati alla vista. Questo metodo viene ereditato dai nostri controller utente dalla classe genitore Controller, posizionata nel core. Creiamo questa classe:

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

Come potete vedere, il metodo render accetta come parametro il nome della vista e i dati per la visualizzazione. Lasciamo che questo metodo restituisca un oggetto di una speciale classe Page, in cuì conterrà le informazioni sulla visualizzazione dei dati dell'azione del controller. In questa classe conterrà il nome della vista, i dati, così come il titolo della pagina e il nome del file di layout del sito:

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

Allora il codice del nostro metodo render sarà così:

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

Spiego cosa succede qui. Il nome della vista e i dati arrivano come parametri del metodo. Tuttavia, nel controller utente viene impostato anche il titolo della pagina - tramite l'impostazione della proprietà title. Ciò significa che in $this->title conterrà il titolo che passeremo al costruttore della classe Page.

Ci sono anche dettagli riguardanti il layout. Come sapete, il nostro framework utilizza un layout dal file default.php. In realtà, ogni azione può avere un layout diverso. Per farlo, è necessario nell'azione stessa nella proprietà layout impostare un altro nome per il layout.

Come si ottiene: il nostro controller genitore ha una proprietà layout, di default con valore 'default.php'. Questo sarà il layout predefinito. Tuttavia, se l'azione del controller utente sovrascrive il valore della proprietà layout, allora anche il layout sarà diverso.

Copia il codice della mia classe Controller e posizionalo nel file /core/Controller.php.

Copia il codice della mia classe Page e posizionalo nel file /core/Page.php.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta