나만의 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 클래스에서 누락된 구현 부분과 그에 대한 제 설명을 찾을 수 있을 것입니다.