MVC-路由route
在路由类中我们有一个构造函数
首先在构造函数外定义变量控制器名和方法名
public $ctrl;//控制器变量名
public $action;//方法变量名
在构造函数内先判断根路径
if (isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI']!="/")
{
}
else
{
}
如果符合路径格式
那么在内获取URL路径并定义在域名后的第一个参数为控制器名
第二个参数为控制器方法名和之后的参数定义为GET传值数转译;
//获取url路径
$path = $_SERVER['REQUEST_URI'];
//分开路径名称
$arr = explode('/',trim($path,'/'));
//判断控制器
if (isset($arr[0]))
{
$this->ctrl = $arr[0];
}
unset($arr[0]);
//判断方法
if (isset($arr[1]))
{
$this->action = $arr[1];
unset($arr[1]);
}
else
{
$this->action = "index";
}
//url多余部分转成 Get
//id/1/str/2/test/3
$count = count($arr) + 2;
for ($i=2; $i < $count; $i=$i+2) {
if (isset($arr[$i + 1]))
{
$_GET[$arr[$i]] = $arr[$i+1];
}
}
//获取url路径
$path = $_SERVER['REQUEST_URI'];
//分开路径名称
$arr = explode('/',trim($path,'/'));
//判断控制器
if (isset($arr[0]))
{
$this->ctrl = $arr[0];
}
unset($arr[0]);
//判断方法
if (isset($arr[1]))
{
$this->action = $arr[1];
unset($arr[1]);
}
else
{
$this->action = "index";
}
//url多余部分转成 Get
//id/1/str/2/test/3
$count = count($arr) + 2;
for ($i=2; $i < $count; $i=$i+2) {
if (isset($arr[$i + 1]))
{
$_GET[$arr[$i]] = $arr[$i+1];
}
}
如果不符合判断的路径格式那么默认为index控制器和index方法
$this->ctrl = "index";
$this->action= "index";
代码整合:
<?php
namespace roce\lib;
class route
{
/**
* $ctrl 控制器
* $action 方法
* @var [type]
*/
public $ctrl;
public $action;
public function __construct()
{
if (isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI']!="/")
{
//获取url路径
$path = $_SERVER['REQUEST_URI'];
//分开路径名称
$arr = explode('/',trim($path,'/'));
//判断控制器
if (isset($arr[0]))
{
$this->ctrl = $arr[0];
}
unset($arr[0]);
//判断方法
if (isset($arr[1]))
{
$this->action = $arr[1];
unset($arr[1]);
}
else
{
$this->action = "index";
}
//url多余部分转成 Get
//id/1/str/2/test/3
$count = count($arr) + 2;
for ($i=2; $i < $count; $i=$i+2) {
if (isset($arr[$i + 1]))
{
$_GET[$arr[$i]] = $arr[$i+1];
}
}
}
else
{
$this->ctrl = "index";
$this->action= "index";
}
}
}
?>