O'z MVC freymvorkingizda Dispetcherni ishlab chiqish
index.php faylining hozirgi tarkibini eslaymiz:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// sizning avtoyuklash realizatsiyangiz
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Ko'rib turganingizdek, hozircha routerimiz
Track klassining ob'ektini qaytarmoqda,
unda kontroller nomi, amal nomi va manzil
qatoridagi parametrlar mavjud. Bundan tashqari,
oldingi darsda biz barcha kontrollerlarning
ota-sinasini yasadik.
Endi biz $track o'zgaruvchimizda mavjud
bo'lgan ma'lumotlar asosida kontroller metodini
chaqirilishini ta'minlashimiz mumkin.
Buning uchun maxsus Dispatcher klassi
mas'ul bo'ladi. Dispetcher Track klassining
ob'ektini oladi va uning ma'lumotlari asosida
ko'rsatilgan klassning ob'ektini yaratadi,
shu klassning metodini chaqiradi, ushbu metodga
parametrlarni uzatadi.
Keling, dispetcher chaqiruvini index.php
fayliga qo'shamiz:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// sizning avtoyuklash realizatsiyangiz
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Dispetcherni chaqirish:
$page = ( new Dispatcher ) -> getPage($track);
?>
Bizning dispetcherimizning getPage
metodini chaqirish render kontroller
metodini chaqiradi va ushbu metod chaqiruvi
qaytgan narsani qaytaradi. Siz oldingi darsdan
bilganingizdek, render kontroller metodi
Page klassining ob'ektini qaytaradi.
Mana bizning Dispatcher klassimizning tayyorgarlik ko'rinishi:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kod
return kontroller -> render(parametrlar);
}
}
?>
Mening tayyorgarlik ko'rinishimdan foydalanib
tasvirlangan Dispatcher klassini realizatsiya qiling.
Uning ishlashini tekshiring. Qiyinchiliklar
yuzaga kelsa, mening tayyorlagan o'quv
freymvorkim fayllaridagi boshlang'ich kodni ko'rib chiqing.