⊗ppMVDFmCn 28 of 35 menu

Controllere i dit eget MVC framework i PHP

Som du allerede ved, har alle controllere i vores framework en metode render, som skal kaldes for at sende data til visningen. Denne metode arver vores brugerdefinerede controllere fra forældreklassen Controller, placeret i kernen. Lad os lave denne klasse:

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

Som du kan se, tager metoden render parametre med navnet på visningen og data til visning. Lad denne metode returnere et objekt af en speciel klasse Page, hvor information om visningen af controllerens handling vil være indeholdt. I denne klasse vill være indeholdt navnet på visningen, data, samt sidetitlen og filnavnet med websitets layout :

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

Så vil koden for vores render metode se sådan ud:

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

Lad mig forklare, hvad der sker her. Visningsnavnet og data modtages som parametre til metoden. Der er dog også en sidetitel sat i brugercontrolleren - ved at tildele egenskaben title. Det betyder, at $this->title vil indeholde titlen, som vi vil videregive til konstruktøren af klassen Page.

Der er også nuancer med layoutet. Som du ved, bruger vores framework et layout fra filen default.php. Faktisk kan hver handling have et andet layout. For at gøre dette skal handlingen selv tildele egenskaben layout et andet layoutnavn.

Hvordan dette opnås: vores forældrecontroller har en egenskab layout, som standard har værdien 'default.php'. Dette vil være standardlayoutet. Hvis en handling i brugercontrolleren dog tildeler egenskaben layout en anden værdi, vil layoutet også være anderledes.

Kopier koden for min klasse Controller og placer den i filen /core/Controller.php.

Kopier koden for min klasse Page og placer den i filen /core/Page.php.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis