Utveckling av en router i ett eget MVC-ramverk
Nu behöver du utveckla en router. Den representerar en klass som kommer att ta en array av rutter, ta den efterfrågade URL:en, och avgöra vilken av rutterna som motsvarar denna URL. Efter att ha hittat den motsvarande ruten bör vår klass erhålla delar av URL:en, som motsvarar rutens parametrar.
Låt vår router returnera
ett objekt av klassen Track som ett resultat,
innehållande namnet på
kontrollern som ska anropas för
denna förfrågan, namnet på åtgärden och parametrarna från URL:en.
Låt vår klass Track ha egenskaperna
controller, action och params,
som endast är läsbara:
<?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;
}
}
?>
Exempel
Som exempel, låt oss säga att följande är inmatat i adressfältet
/test/1/2/. Låt oss säga att vi har en rutt,
som motsvarar denna adress:
<?php
new Route('/test/:var1/:var2/', 'test', 'index');
?>
Det betyder att kontrollerns namn kommer att vara test,
åtgärdens namn - index, och parameterarrayen
kommer att vara följande:
<?php
['var1' => 1, 'var2' => 2]
?>
Målet med denna lektion är att skriva klassen Router,
som returnerar ett objekt av klassen Track.
Resten berör oss inte för tillfället. Låt oss börja
skriva denna klass.
Praktiska uppgifter
Kopiera koden för min klass Track
och placera den i filen
/core/Track.php.