Սեփական 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 դասում դուք
կգտնեք իրականացման բացակայող մասը և իմ մեկնաբանությունները
դրա վերաբերյալ: