⊗ppMVDFmCn 28 of 35 menu

Kontrollerek a saját MVC keretrendszerben PHP-ben

Amint már tudjátok, a keretrendszerünk összes kontrollerének van egy render metódusa, amelyet az adatok nézetbe történő elküldéséhez kell meghívni. Ezt a metódust a felhasználói kontrollereink öröklik a Controller szülőosztálytól, amely a magban található. Hozzuk létre ezt az osztályt:

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

Amint látjátok, a render metódus paraméterként fogadja a nézet nevét és a megjelenítendő adatokat. Legyen ez a metódus egy speciális Page osztály objektumát adja vissza, amely a kontroller műveletének adatmegjelenítési információit tartalmazza. Ez az osztály tartalmazza a nézet nevét, az adatokat, valamint az oldal címét és a webhely elrendezésének fájlnevét:

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

Ekkor a render metódusunk kódja így fog kinézni:

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

Hadd magyarázzam el, mi történik itt. A nézet neve és az adatok paraméterként érkeznek a metódushoz. Azonban a felhasználói kontrollerben még az oldal címe is be van állítva - a title tulajdonság beírásával. Ez azt jelenti, hogy a $this->title lesz az a cím, amelyet továbbadunk a Page osztály konstruktorának.

Vannak árnyalatok az elrendezéssel kapcsolatban is. Amint tudjátok, a keretrendszerünk a default.php fájlból származó elrendezést használja. Valójában minden műveletnek lehet más elrendezése is. Ehhez magában a műveletben a layout tulajdonságba egy másik elrendezésnevet kell beírni.

Hogyan érhetjük ezt el: a szülői kontrollerünk rendelkezik egy layout tulajdonsággal, amely alapértelmezés szerint a 'default.php' értékkel rendelkezik. Ez lesz az alapértelmezett elrendezés. Ha azonban a felhasználói kontroller művelete felülírja a layout tulajdonság értékét, akkor az elrendezés is más lesz.

Másolja le a Controller osztályom kódját és helyezze el a /core/Controller.php fájlban.

Másolja le a Page osztályom kódját és helyezze el a /core/Page.php fájlban.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás