MVC-路由route

                                         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";
		}

	}

}

?>

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值