⊗ppMVDFmDs 29 of 35 menu

Tworzenie dyspozytora we własnym frameworku MVC

Przypomnijmy sobie obecną zawartość pliku index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // twoja implementacja autoloadingu }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); ?>

Jak widzicie, na razie nasz router zwraca obiekt klasy Track, zawierający nazwę kontrolera, nazwę akcji oraz parametry z ciągu adresowego. Ponadto, w poprzedniej lekcji stworzyliśmy rodzica wszystkich kontrolerów.

Teraz możemy sprawić, aby nastąpiło wywołanie metody kontrolera, którego dane zawarte są w naszej zmiennej $track.

Zajmie się tym specjalna klasa Dispatcher. Dyspozytor będzie otrzymywał obiekt klasy Track i na podstawie jego danych tworzył obiekt wskazanej klasy, wywoływał metodę tej klasy, przekazując do tej metody parametry.

Dodajmy wywołanie dyspozytora do pliku index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // twoja implementacja autoloadingu }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); // Wywołanie dyspozytora: $page = ( new Dispatcher ) -> getPage($track); ?>

Wywołanie metody getPage naszego dyspozytora będzie wywoływać metodę render kontrolera i zwracać to, co zwróciło wywołanie tej metody. Jak już wiecie z poprzedniej lekcji, metoda render kontrolera zwraca obiekt klasy Page.

Oto szablon naszej klasy Dispatcher:

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

Korzystając z mojego szablonu zaimplementuj opisaną klasę Dispatcher. Sprawdź jej działanie. W przypadku trudności zajrzyj do kodu źródłowego w plikach wykonanego przeze mnie edukacyjnego frameworka.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć