MVC框架路由模块的解析

来源:互联网 发布:淘宝账号注销后支付宝 编辑:程序博客网 时间:2024/05/22 03:53

1.我们都知道每个框架它们的路由都是不一样的,例如YII框架,它的路由就是%F,而TP3.2框架是以 / 区分,而我们自己的框架

我们可以自己去设计,这都是无所谓的,首先我不得不说一下,路由主要是用PHP函数:$_SERVER来分割访问地址,然后从中找到

我们所要访问的控制器,方法,以及所传的参数,我们还需要做的就是对参数的一种判断,判断什么呢?就是如果访问地址我写成这样

www.test/Home/Index/index/id/2/3,这样的网址,我们就需要对参数进行判断了,下面看一下对参数进行循环判断的代码:

$count = count($patharr)+3;//                p($count);die;                $i = 3;                while($i<$count)                {                    if(isset($patharr[$i +1]))                    {                        $_GET[$patharr[$i]] = $patharr[$i+1];                    }                    $i = $i+3;                }
因为我们对访问的网址进行了分割,从而方便我们找出所指向的模块,控制器以及方法。然而分割后的参数名称是【3】,所以我们进行了+3,

下面是我们框架的路由模块的完整代码:

<?php/** * Created by PhpStorm. * User: 59106 * Date: 2017/6/27 * Time: 20:19 */namespace core\lib;class rount{    public $mo;public $ctrl;    public $action;        public function __construct()        {            /*             * 隐藏index.php             * 在这里要想办法获取模块(admin/home)             * 获取当中的参数部分             * 获取当中的控制器和方法             */            if(isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI']!='/')            {                $path = $_SERVER['REQUEST_URI'];                //p($path);exit;                $patharr = explode('/',trim($path,'/'));                //print_r($patharr);exit;                /*                 * Array ( [0] => Home [1] => Index [2] => index )                 *///首先我们要想一下,如果他只输入一个Home的话,就默认为Home/index/index,那样的话,我们就需要改一下代码了                if(isset($patharr[0]))                {                    $this->mo = $patharr[0];                }                unset($patharr[0]);                if(isset($patharr[1]))                {                    $this->ctrl = $patharr[1];                    unset($patharr[1]);                }else{                    $this->ctrl = 'index';                }                if(isset($patharr[2]))                {                    $this->action = $patharr[2];                    unset($patharr[2]);                }else{                    $this->action = 'index';                }//                if(isset($patharr[0]))//                {////                    $this->ctrl = $patharr[0];////                }////                unset($patharr[0]);////                if(isset($patharr[1])){////                    $this->action = $patharr[1];////                    unset($patharr[1]);////                }else{////                    $this->action = 'index';////                }                //p($patharr);die;                $count = count($patharr)+3;//                p($count);die;                $i = 3;                while($i<$count)                {                    if(isset($patharr[$i +1]))                    {                        $_GET[$patharr[$i]] = $patharr[$i+1];                    }                    $i = $i+3;                }//                p($_GET);exit;            }else{                $this->mo = 'Home';                $this->ctrl = 'index';                $this->action = 'index';            }        }}

原创粉丝点击