როუტერის იმპლემენტაცია საკუთარ 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 კლასში
თქვენ იპოვით დაკარგულ იმპლემენტაციის ნაწილს და ჩემი
კომენტარებს მასზე.