<?php
// 路由的原理
//http://php.io/1011/mvc/route.php
// 1. 从url路径中解析出独立的单元
$uri = $_SERVER['REQUEST_URI'];
echo $uri;
$req = explode('/', $uri);
echo '<pre>'. print_r($req, true);
//admin: 后台模块
//User: 控制器
//add: 控制器中的方法
$route = array_slice($req, 4, 3);
echo '<pre>'. print_r($route, true);
list($module, $controller, $action) = $route;
echo '模块: '.$module.'<br>控制器: '.$controller. '<br>操作: '. $action;
//http://php.io/1011/mvc/route.php/admin/user/add/name/peter/age/36/salary/9988
///name/peter/age/36/salary/9988 :参数
$valus = array_slice($req, 7, 6);
echo '<pre>'. print_r($valus, true);
for ($i=0; $i<count($valus); $i+=2) {
$params[$valus[$i]] = $valus[$i+1];
}
echo '<pre>'. print_r($params, true);
// 控制器
class User
{
public function add($name, $age, $salary)
{
return __METHOD__. ': 姓名: '.$name.', 年龄: '.$age. ', 工资: '. $salary;
}
}
// 路由的目标, 就是将URL中的操作映射到控制器中的方法上
echo call_user_func_array([(new User()), 'add'], $params);