Vývoj routeru ve vlastním MVC frameworku
Nyní potřebujete vyvinout router. Představuje třídu, která bude brát pole rout, brat požadovanou URL a určovat, která z rout odpovídá dané URL. Po nalezení odpovídající routy musí naše třída získat části URL, odpovídající parametrům routy.
Nechť náš router vrací jako výsledek
objekt třídy Track, obsahující název
kontroleru, který má být zavolán pro
tento požadavek, název akce a parametry z URL.
Nechť naše třída Track má vlastnosti
controller, action a params,
přístupné pouze pro čtení:
<?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;
}
}
?>
Příklad
Jako příklad předpokládejme, že je v adresním řádku zadáno
/test/1/2/. Předpokládejme, že máme routu,
odpovídající této adrese:
<?php
new Route('/test/:var1/:var2/', 'test', 'index');
?>
To znamená, že název kontroleru bude test,
název akce - index, a pole parametrů
bude následující:
<?php
['var1' => 1, 'var2' => 2]
?>
Cílem této lekce je napsat třídu Router,
vracející objekt třídy Track.
Zbytek se nás zatím netýká. Pojďme se pustit
do psaní této třídy.
Praktické úkoly
Zkopírujte kód mé třídy Track
a umístěte jej do souboru
/core/Track.php.