Ontwikkeling van een router in je eigen MVC-framework
Nu moet je een router ontwikkelen. Het is een klasse die een array van routes neemt, de opgevraagde URL neemt, en bepaalt welke route overeenkomt met deze URL. Na het vinden van de bijbehorende route moet onze klasse de URL-onderdelen verkrijgen, die overeenkomen met de routeparameters.
Laat onze router als resultaat een
object van de klasse Track teruggeven,
bevat de naam van de controller
die moet worden aangeroepen voor
deze aanvraag, de naam van de actie en de parameters uit de URL.
Laat onze klasse Track eigenschappen hebben
controller, action en params,
alleen-lezen:
<?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;
}
}
?>
Voorbeeld
Stel dat in de adresbalk is ingevoerd
/test/1/2/. Stel dat we een route hebben,
die overeenkomt met dit adres:
<?php
new Route('/test/:var1/:var2/', 'test', 'index');
?>
Dit betekent dat de controllernaam test zal zijn,
de actienaam - index, en de parameterarray
zal als volgt zijn:
<?php
['var1' => 1, 'var2' => 2]
?>
Het doel van deze les is om een klasse Router te schrijven,
die een object van de klasse Track teruggeeft.
De rest raakt ons nog niet. Laten we beginnen
met het schrijven van deze klasse.
Praktische taken
Kopieer de code van mijn klasse Track
en plaats het in het bestand
/core/Track.php.