⊗ppMVDFmDs 29 of 35 menu

Разработка на диспетчер в собствен MVC фреймуорк

Припомнете си текущото съдържание на файла index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // вашата реализация на автозареждане }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); ?>

Както виждате, засега нашият рутер връща обект от клас Track, съдържащ името на контролера, името на действието и параметрите от адресния бар. Освен това, в предишния урок направихме родител на всички контролери.

Сега можем да направим така, че да се осъществи извикване на метода на контролера, чиито данни се съдържат в нашата променлива $track.

С това ще се занимава специален клас Dispatcher. Диспетчерът ще получава обект от клас Track и по неговите данни ще създава обект от посочения клас, ще извиква метода на този клас, предавайки в този метод параметрите.

Нека добавим извикване на диспетчера във файла index.php:

<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // вашата реализация на автозареждане }); $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php'; $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']); // Извикване на диспетчера: $page = ( new Dispatcher ) -> getPage($track); ?>

Извикването на метода getPage на нашия диспетчер ще извиква метода render на контролера и ще връща това, което върна извикването на този метод. Както вече знаете от предишния урок, методът render на контролера връща обект от клас Page.

Ето заготовката на нашия клас Dispatcher:

<?php namespace Core; class Dispatcher { public function getPage(Track $track) { ...код return контролер -> render(параметри); } } ?>

Използвайки моята заготовка, реализирайте описания клас Dispatcher. Проверете неговата работа. При затруднения погледнете изходния код във файловете на направения от мен учебен фреймуорк.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне