Dezvoltarea unui router în propriul framework MVC
Acum trebuie să dezvoltați un router. Acesta este o clasă care va lua un array de rute, va lua URL-ul solicitat, și va determina care rută corespunde acestui URL. După găsirea rutei corespunzătoare, clasa noastră trebuie să obțină părțile URL-ului, corespunzătoare parametrilor rutei.
Fie ca router-ul nostru să returneze
un obiect al clasei Track, care conține numele
controlerului care trebuie apelat pentru
această solicitare, numele acțiunii și parametrii din URL.
Fie ca clasa noastră Track să aibă proprietățile
controller, action și params,
accesibile doar pentru citire:
<?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;
}
}
?>
Exemplu
De exemplu, să presupunem că în bara de adrese a fost introdus
/test/1/2/. Să presupunem că avem o rută,
corespunzătoare acestei adrese:
<?php
new Route('/test/:var1/:var2/', 'test', 'index');
?>
Aceasta înseamnă că numele controlerului va fi test,
numele acțiunii - index, iar array-ul de parametri
va fi următorul:
<?php
['var1' => 1, 'var2' => 2]
?>
Scopul acestei lecții este de a scrie clasa Router,
care returnează un obiect al clasei Track.
Restul nu ne preocupă momentan. Să începem
scrierea acestei clase.
Sarcini practice
Copiați codul clasei mele Track
și plasați-l în fișierul
/core/Track.php.