⊗ppMVDFmCn 28 of 35 menu

Controllers in je eigen MVC-framework in PHP

Zoals je al weet, hebben alle controllers in ons framework een methode render, die aangeroepen moet worden om gegevens naar de view te sturen. Deze methode erven onze, gebruikerscontrollers, van de bovenliggende klasse Controller, gelegen in de kern. Laten we deze klasse maken:

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

Zoals je ziet, accepteert de methode render als parameter de naam van de view en de gegevens voor weergave. Laat deze methode een object teruggeven van een speciale klasse Page, waarin de informatie over de weergave van de gegevens van de controlleractie zal bevatten. In deze klasse zullen de viewnaam, gegevens, evenals de paginatitel en de bestandsnaam met de layout van de site staan:

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

Dan zal de code van onze methode render er zo uitzien:

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

Ik zal uitleggen wat hier gebeurt. De viewnaam en gegevens komen binnen als parameters van de methode. Echter, in de gebruikerscontroller wordt ook nog de paginatitel ingesteld - door de eigenschap title in te vullen. Dat betekent dat in $this->title de titel zal zitten die we doorgeven aan de constructor van de klasse Page.

Er zijn ook nuances met de layout. Zoals je weet, gebruikt ons framework een layout uit het bestand default.php. Eigenlijk kan elke actie ook een andere layout hebben. Hiervoor moet in de actie zelf in de eigenschap layout een andere layoutnaam worden ingevuld.

Hoe dit bereikt wordt: onze bovenliggende controller heeft een eigenschap layout, die standaard de waarde 'default.php' heeft. Dit zal de standaardlayout zijn. Echter, als de actie van de gebruikerscontroller de waarde van de eigenschap layout overschrijft, dan zal de layout anders zijn.

Kopieer de code van mijn klasse Controller en plaats deze in het bestand /core/Controller.php.

Kopieer de code van mijn klasse Page en plaats deze in het bestand /core/Page.php.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren