# Применение параметров в роутах в MVC в PHP

Давайте посмотрим применение описанного на более жизненном примере. Пусть наш контроллер `PageController` содержит массив страниц (эти данные должна отдавать модель, но с моделями мы еще не разобрались, поэтому пусть данные пока просто хранятся в контроллере):

`<?php namespace Project\Controllers; use Core\Controller; class PageController extends Controller { private $pages; public function __construct() { $this->pages = [ 1 => 'страница 1', 2 => 'страница 2', 3 => 'страница 3', ]; } } ?>`

Давайте сделаем действие `show`, которое будет выводить на экран страницу с определенным номером (`id`):

`<?php namespace Project\Controllers; use Core\Controller; class PageController extends Controller { private $pages; public function __construct() { $this->pages = [ 1 => 'страница 1', 2 => 'страница 2', 3 => 'страница 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 => 'страница 1', 2 => 'страница 2', 3 => 'страница 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`, сделайте действие `show`, которое будет выводить юзера по определенному `id`. Пусть оно будет доступно по адресу следующего вида: `/user/:id/`.

В контроллере `UserController`, сделайте действие `info`, которое будет выводить имя или возраст заданного юзера. Пусть это действие будет доступно по адресу следующего вида: `/user/:id/:key/`, где `key` будет иметь значение `'name'`, `'age'` или `'salary'`.

В контроллере `UserController`, сделайте действие `all`, которое будет выводить список всех юзеров на экран. Пусть это действие будет доступно по адресу следующего вида: `/user/all/` (параметров тут никаких не будет).

В контроллере `UserController`, сделайте действие `first`, которое будет выводить список N первых юзеров на экран. Пусть это действие будет доступно по адресу следующего вида: `/user/first/:n/`, где в параметре будет количество юзеров, которые следует вывести на экран.

← →
↑