Utvikling av en router i ditt eget MVC-rammeverk
Nå må du utvikle en router. Den representerer en klasse som vil ta en array med ruter, ta den forespurte URL-en, og avgjøre hvilken av rutene som tilsvarer denne URL-en. Etter å ha funnet den tilsvarende ruten, må klassen vår hente deler av URL-en som tilsvarer rutens parametere.
La vår router returnere
et objekt av klassen Track som resultat,
som inneholder navnet på
kontrolleren som skal kalles for
denne forespørselen, navnet på handlingen og parametere fra URL-en.
La klassen vår Track ha egenskapene
controller, action og params,
som kun er lesbare:
<?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;
}
}
?>
Eksempel
La oss som eksempel si at adresselinjen har
/test/1/2/. La oss si at vi har en rute,
som tilsvarer denne adressen:
<?php
new Route('/test/:var1/:var2/', 'test', 'index');
?>
Dette betyr at kontrollerens navn vil være test,
handlingens navn - index, og parameter-arrayen
vil være som følger:
<?php
['var1' => 1, 'var2' => 2]
?>
Målet med denne leksjonen er å skrive klassen Router,
som returnerer et objekt av klassen Track.
Resten angår oss ikke foreløpig. La oss begynne
å skrive denne klassen.
Praktiske oppgaver
Kopier koden til min klasse Track
og plasser den i filen
/core/Track.php.