Рэалізацыя роўтара ў сваім 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
вы знойдзеце
недастаючую частку рэалізацыі і маё каментары
да яе.