Параметрҳо дар роутҳои MVC дар PHP
Биёед истифодаи он чи ки шарҳ дода шуд, дар мисоли
амлӣ таҳқиқ кунем. Фарз мекунем, ки контроллери
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',
];
}
}
?>
Биёед амалиёти show-ро созем, ки
саҳифаро бо рақами муайян (id)
ба экран чоп кунад:
<?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, амалиёти
show-ро созед, ки корбарро (user)-ро
барои id-и муайян чоп кунад. Бигзор он
дастрас бошад ба нишони зерин:
/user/:id/.
Дар контроллери UserController, амалиёти
info-ро созед, ки ном ё синни корбари
(user)-и додашударо чоп кунад. Бигзор ин амалиёт
дастрас бошад ба нишони зерин:
/user/:id/:key/, ки дар он key
қимати 'name', 'age'
ё 'salary' дошта бошад.
Дар контроллери UserController, амалиёти
all-ро созед, ки рӯйхати ҳамаи корбарон
(users)-ро ба экран чоп кунад. Бигзор ин амалиёт
дастрас бошад ба нишони зерин:
/user/all/ (дар ин ҷо параметрҳое вуҷуд надоранд).
Дар контроллери UserController, амалиёти
first-ро созед, ки рӯйхати N корбарони
(users)-и аввалро ба экран чоп кунад. Бигзор ин амалиёт
дастрас бошад ба нишони зерин: /user/first/:n/,
ки дар он параметр шумораи корбароне (users)-ро дорад,
ки бояд ба экран чоп шаванд.