⊗ppMVDFmCn 28 of 35 menu

Kontrolerji v lastnem MVC ogrodju v PHP

Kot že veste, imajo vsi kontrolerji našega ogrodja metodo render, ki jo je treba klicati za pošiljanje podatkov v pogled. To metodo naši, uporabniški kontrolerji, podedujejo od nadrejenega razreda Controller, ki se nahaja v jedru. Naredimo ta razred:

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

Kot vidite, metoda render kot parameter sprejme ime pogleda in podatke za prikaz. Naj ta metoda vrne objekt posebnega razreda Page, v katerem bo vsebovala informacije o pogledu podatkov akcije kontrolerja. V tem razredu bo vsebovano ime pogleda, podatki, pa tudi naslov strani in ime datoteke z postavitvijo spletišča:

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

Takrat bo koda naše metode render videti takole:

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

Naj pojasnim, kaj se tu dogaja. Ime pogleda in podatki pridejo kot parametri metode. Vendar, v uporabniškem kontrolerju je nastavljen še naslov strani - z zapisovanjem lastnosti title. To pomeni, da bo v $this->title vsebovan naslov, ki ga bomo posredovali konstruktorju razreda Page.

Obstajajo tudi nianse z postavitvijo. Kot veste, naše ogrodje uporablja postavitev iz datoteke default.php. Pravzaprav lahko vsaka akcija ima tudi drugačno postavitev. Za to je treba v sami akciji v lastnost layout zapisati drugo ime postavitve.

Kako se to doseže: naš nadrejeni kontroler ima lastnost layout, ki privzeto ima vrednost 'default.php'. To bo privzeta postavitev. Vendar, če akcija uporabniškega kontrolerja predefinira vrednost lastnosti layout, bo tudi postavitev drugačna.

Kopirajte kodo mojega razreda Controller in ga razmestite v datoteko /core/Controller.php.

Kopirajte kodo mojega razreda Page in ga razmestite v datoteko /core/Page.php.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni