Oz MVC framework-də Dispetçerin hazırlanması
Faylın index.php hazırkı məzmununu xatırlayaq:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// sizin avtomatik yukləmə realizasiyanız
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Gördüyünüz kimi, hazırda router-ımız
Track sinfinin obyektini qaytarır,
içində nəzarətçinin adı, hərəkət adı və
ü̈nvan sətirindən parametrlər saxlayır. Bundan əlavə, əvvəlki
dərsdə biz bütün nəzarətçilərin valideynini
etdik.
İndi biz $track dəyişənimizdə saxlanılan
məlumatlara əsasən nəzarətçi metodunun çağrılmasını
təmin edə bilərik.
Bununla xüsusi Dispatcher sinfi məşğul olacaq.
Dispetçer Track sinfinin obyektini alacaq
və onun məlumatlarına əsasən göstərilən
sinfin obyektini yaradacaq, bu sinfin metodunu çağıracaq,
metoda parametrləri ötürəcək.
Gəlin index.php faylına dispetçerin çağrılmasını əlavə edək:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// sizin avtomatik yukləmə realizasiyanız
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Dispetçerin çağrılması:
$page = ( new Dispatcher ) -> getPage($track);
?>
Dispetçerimizin getPage metodunun çağrılması
nəzarətçinin render metodunu çağıracaq
və bu metodun çağrılmasının qaytardığını qaytaracaq.
Əvvəlki dərsdən artıq bildiyiniz kimi, nəzarətçinin
render metodu Page sinfinin obyektini
qaytarır.
Budur Dispatcher sinfimizin hazırlığı:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kod
return nəzarətçi -> render(parametrlər);
}
}
?>
Mənim hazırlığımdan istifadə edərək təsvir olunan
Dispatcher sinfini realizə edin. Onun işini yoxlayın.
Çətinliklər olduqda mənim hazırladığım təlim framework-unun
fayllarındakı mənbə koduna baxın.