⊗ppMVDFmDs 29 of 35 menu

Vývoj dispatcheru ve vlastním MVC frameworku

Připomeňme si aktuální obsah souboru index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // vaše implementace automatického načítání }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); ?>

Jak vidíte, zatím nám náš router vrací objekt třídy Track, obsahující název kontroleru, název akce a parametry z adresního řádku. Kromě toho, v předchozí lekci jsme vytvořili rodiče všech kontrolerů.

Nyní můžeme zařídit, aby došlo k volání metody kontroleru, jehož data jsou obsažena v naší proměnné $track.

Tím se bude zabývat speciální třída Dispatcher. Dispatcher bude získávat objekt třídy Track a podle jeho dat vytvářet objekt uvedené třídy, volat metodu této třídy a předávat do této metody parametry.

Přidejme volání dispatcheru do souboru index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // vaše implementace automatického načítání }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); // Volání dispatcheru: $page = ( new Dispatcher ) -> getPage($track); ?>

Volání metody getPage našeho dispatcheru bude volat metodu render kontroleru a vracet to, co vrátilo volání této metody. Jak již víte z předchozí lekce, metoda render kontroleru vrací objekt třídy Page.

Zde je příprava naší třídy Dispatcher:

<?php namespace Core; class Dispatcher { public function getPage(Track $track) { ...kód return kontroler -> render(parametry); } } ?>

Pomocí mé přípravy implementujte popsanou třídu Dispatcher. Ověřte její fungování. Při obtížích se podívejte na zdrojový kód v souborech mnou vytvořeného výukového frameworku.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout