Реализацияи роутер дар фреймворки MVC
Биёед ҳоло заготовкаи синфи 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 ҷойгир кунед.
Синфи тавсифшудаи Router-ро амалӣ кунед,
ки натиҷаи худ объекти синфи
Track-ро бармегардонад. Агар ба мушкилот дучор шавед
(ки эҳтимол аст), ба коди ибтидоии фреймворки он чизе ки шумо истифодаи
MVC-ро аз рӯи он омухтед, нигаред. Дар он ҷо дар синфи Router шумо
қисми кофии амалӣ кардан ва тавзеҳоти манро ба он хоҳед ёфт.