Իր 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 դասը: Ստուգեք նրա աշխատանքը:
Դժվարությունների դեպքում դիտեք սկզբնական կոդը
իմ կատարած ուսումնական ֆրեյմվորկի ֆայլերում: