⊗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çeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш