Өз MVC фреймворкіңіздегі routerді іске асыру
Енді өз шақыруларымызға сәйкес Router класының
қалыптасын жазайық:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// осында код болады
}
}
?>
getTrack әдісінде берілген $uri-ға
роуттардың қайсысы сәйкес келетінін анықтауымыз керек.
Ол үшін роуттар массивін циклмен қайталау керек:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// $uri және $route тексеруі
}
}
}
?>
Егер қандай да бір роут URI-ге сәйкес келсе, біз
осы URI-ден роут параметрлерінің мәндерін алып,
Track класының нысанын қайтаруымыз керек:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (роут пен URI сәйкестігін тексеру) {
$params = ; // uri-ден параметрлерді алу керек
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // ешбір роут сәйкес келмесе
}
}
?>
Router класының қалыптасын көшіріп алып,
оны /core/Router.php файлына орналастырыңыз.
Track класының нысанын қайтаратын Router
класын жүзеге асырыңыз. Егер қиындық туындаса
(бұлай болуы мүмкін), MVC қолдануды зерттеген
фреймворктың бастапқы кодынан қараңыз. Онда
Router класында жетіспейтін іске асыру бөлігін
және оған арналған түсініктемелерімді таба аласыз.