Kendi MVC Framework'ümüzde Router Geliştirme

Şimdi bir router geliştirmeniz gerekiyor. Bu, rotalar dizisini alacak, istenen URL'yi alacak ve hangi rotanın bu URL'ye karşılık geldiğini belirleyecek bir sınıftır. İlgili rotayı bulduktan sonra, sınıfımız URL'nin parametrelere karşılık gelen kısımlarını almalıdır.

Router'ımızın sonucu olarak, üzerinde çağrılması gereken denetleyicinin adını, eylemin adını ve URL'den parametreleri içeren Track sınıfının bir nesnesini döndürsün.

Track sınıfımızın, sadece okunabilir olan controller, action ve params özellikleri olsun:

/core/Track.php<?php
  namespace Core;
  
  class Track
  {
    private $controller;
    private $action;
    private $params;
    
    public function __construct($controller, $action, $params)
    {
      $this->controller = $controller;
      $this->action = $action;
      $this->params = $params;
    }
    
    public function __get($property)
    {
      return $this->$property;
    }
  }
?>

Örnek

Örnek olarak, adres çubuğuna /test/1/2/ yazıldığını varsayalım. Bu adrese karşılık gelen bir rotamız olduğunu düşünelim:

/project/config/routes.php<?php
  new Route('/test/:var1/:var2/', 'test', 'index');
?>

Bu, denetleyici adının test, eylem adının index ve parametre dizisinin aşağıdaki gibi olacağı anlamına gelir:

php<?php
  ['var1' => 1, 'var2' => 2]
?>

Bu dersin amacı, Track sınıfının bir nesnesini döndüren Router sınıfını yazmaktır. Gerisi şimdilik bizi ilgilendirmiyor. Haydi bu sınıfı yazmaya başlayalım.

Pratik Görevler

Задание 1

Benim Track sınıfımın kodunu kopyalayın ve /core/Track.php dosyasına yerleştirin.