独自MVCフレームワークにおけるルーターの実装
それでは、これまでの呼び出しに従ってクラス Router の
ひな形を作成しましょう:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// ここにコードを記述
}
}
?>
メソッド getTrack では、どのルートが指定された
$uri に対応するかを決定する必要があります。
これにはルートの配列をループで処理する必要があります:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// $uriと$routeのチェック
}
}
}
?>
もしあるルートがURIと一致する場合、そのURIからルートのパラメータ値を
取得し、クラス Track のオブジェクトを返す必要があります:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (ルートとURIの一致確認) {
$params = ; // uriからパラメータを取得する必要がある
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // どのルートにも一致しない場合
}
}
?>
クラス Router のひな形をコピーし、
ファイル /core/Router.php に配置してください。
クラス Track のオブジェクトを返すように、
説明されているクラス Router を実装してください。
もし困難を感じる場合(非常に可能性が高いです)、
MVCの利用を学んだフレームワークのソースコードを参照してください。
その中の Router クラスに、実装に不足している部分と
それに対する私のコメントを見つけることができるでしょう。