⊗ppMVDFmCn 28 of 35 menu

Kontrollerid oma MVC raamistikus PHP-s

Nagu te juba teate, on kõigil meie raamistiku kontrolleritel meetod render, mida tuleb kutsuda andmete saatmiseks vaatesse. Selle meetodi pärivad meie kasutajate loodud kontrollerid ülemklassist Controller, mis asub tuumas. Teeme selle klassi:

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

Nagu näete, võtab meetod render parameetritena vastu vaate nime ja andmed kuvamiseks. Olgu see meetod tagastab spetsiaalse klassi Page objekti, mis sisaldab teavet kontrolleri tegevuse andmete vaate kohta. Selles klassis sisalduvad vaate nimi, andmed, samuti lehe pealkiri ja saidi maketi faili nimi:

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

Siis näeb meie meetodi render kood välja selline:

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

Selgitan, mis siin toimub. Vaate nimi ja andmed tulevad meetodi parameetritena. Kuid kasutaja kontrolleris määratakse ka lehe pealkiri - omaduse title kirjutamise teel. Seega sisaldub $this->title-s pealkiri, mille me edastame klassi Page konstruktorile.

On ka nüansse maketiga. Nagu te teate, kasutab meie raamistik maketit failist default.php. Tegelikult võib iga tegevus omada ka teist maketit. Selleks tuleb tegevuses endas omadusse layout kirjutada teine maketi nimi.

Kuidas see saavutatakse: meie ülemkontrolleril on omadus layout, mille vaikeväärtus on 'default.php'. See ongi vaikimisi maketiks. Kui aga kasutaja kontrolleri tegevus muudab omaduse layout väärtust, siis on ka makett teine.

Kopeerige minu klassi Controller kood ja asetage see faili /core/Controller.php.

Kopeerige minu klassi Page kood ja asetage see faili /core/Page.php.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu