Өзүңүздүн 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 классты ишке ашырыңыз. Анын ишин текшериңиз.
Кыйынчылык чыкса, менин жасаган окуу фреймворкумдун файлдарындагы баштапкы кодду караңыз.