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:
<?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:
<?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
['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
Benim Track sınıfımın kodunu kopyalayın
ve /core/Track.php dosyasına yerleştirin.