PHP MVC에서 라우트 매개변수 사용하기
설명한 내용을 보다 실제적인 예제에 적용해 보겠습니다. 우리의 컨트롤러
PageController가 페이지 배열을 가지고 있다고 가정합니다
(이 데이터는 모델에서 제공해야 하지만, 아직 모델에 대해 다루지 않았으므로
일단 데이터는 컨트롤러에만 저장해 두겠습니다):
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
}
?>
특정 번호(id)를 가진 페이지를 화면에 출력하는
show 액션을 만들어 보겠습니다:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show()
{
// 여기서 특정 번호의 페이지를 출력합니다
}
}
?>
주소 /page/1/에 접근하면 첫 번째 페이지의 텍스트가 출력되고,
주소 /page/2/에 접근하면 두 번째 페이지의 텍스트가 출력되는 식으로
작동하도록 하겠습니다. 해당하는 라우트를 생성합니다:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
설명한 show 메서드를 구현합니다:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show($params)
{
echo $this->pages[ $params['id'] ]; // 번호로 페이지 출력
}
}
?>
다음 배열을 포함하는 UserController 컨트롤러를 구현하세요:
<?php
$this->users = [
1 => ['name'=>'user1', 'age'=>'23', 'salary' => 1000],
2 => ['name'=>'user2', 'age'=>'24', 'salary' => 2000],
3 => ['name'=>'user3', 'age'=>'25', 'salary' => 3000],
4 => ['name'=>'user4', 'age'=>'26', 'salary' => 4000],
5 => ['name'=>'user5', 'age'=>'27', 'salary' => 5000],
];
?>
UserController 컨트롤러에서, 특정 id를 가진
사용자를 출력하는 show 액션을 만드세요. 이 액션은 다음과 같은 형태의
주소로 접근 가능해야 합니다: /user/:id/.
UserController 컨트롤러에서, 지정된 사용자의
이름이나 나이를 출력하는 info 액션을 만드세요. 이 액션은 다음과 같은 형태의
주소로 접근 가능해야 합니다: /user/:id/:key/, 여기서 key는
'name', 'age' 또는 'salary' 값을 가집니다.
UserController 컨트롤러에서, 모든 사용자 목록을 화면에 출력하는
all 액션을 만드세요. 이 액션은 다음과 같은 형태의 주소로 접근 가능해야 합니다:
/user/all/ (여기에는 매개변수가 없습니다).
UserController 컨트롤러에서, 처음 N명의 사용자 목록을 화면에 출력하는
first 액션을 만드세요. 이 액션은 다음과 같은 형태의 주소로 접근 가능해야 합니다:
/user/first/:n/, 여기서 매개변수는 화면에 출력할 사용자의 수입니다.