⊗ppMVDFmCn 28 of 35 menu

Kontrollere i ditt eget MVC-rammeverk i PHP

Som du allerede vet, har alle kontrollerne i vårt rammeverk en metode render, som må kalles for å sende data til visningen. Denne metoden arver våre, brukerdefinerte kontrollere fra foreldreklassen Controller, plassert i kjernen. La oss lage denne klassen:

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

Som du ser, tar metoden render parameter imot navnet på visningen og dataene for visning. La denne metoden returnere et objekt av en spesiell klasse Page, i som vil inneholde informasjon om visningen av kontrollerhandlingens data. I denne klassen vil navnet på visningen, dataene, samt sidetittelen og filnavnet med layoutet på nettstedet inneholdes:

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

Da vil koden til vår render-metode se slik ut:

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

La meg forklare hva som skjer her. Visningens navn og data kommer som parametre til metoden. Imidlertid settes også sidetittelen i den brukerdefinerte kontrolleren - ved å skrive til egenskapen title. Det betyr at i $this->title vil tittelen som vi sender til konstruktøren til klassen Page, være tilstede.

Det er også nyanser med layout. Som du vet, bruker rammeverket vårt en layout fra filen default.php. Faktisk kan hver handling ha et annet layout. For å gjøre dette må du i selve handlingen i egenskapen layout skrive et annet layoutnavn.

Hvordan dette oppnås: vår foreldrekontroller har en egenskap layout, som standard har verdien 'default.php'. Dette vil være standardlayoutet. Imidlertid, hvis handlingen til den brukerdefinerte kontrolleren overstyrer verdien til egenskapen layout, vil layoutet være annerledes.

Kopier koden til min Controller-klasse og plasser den i filen /core/Controller.php.

Kopier koden til min Page-klasse og plasser den i filen /core/Page.php.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis