学习php自行开发MVC框架过程(四)

学习php自行开发MVC框架过程(四)

一、创建路由类

1、首先我们要隐藏我们路由上的index.php

2、获取到当前路由的参数部分

3、返回对应控制器和方法

现在我们要在根目录下建一个.htaccess的文件,内容并为

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule> 


他的作用就是当url过来的时候我们把它的路径设置到index.php中

所以当我们访问的网址是www.xxx.com/index/index的话我们实际访问的是www.xxx.com/index.php/index/index

那么我们想要取到控制器和方法呢,我们就要用$_SERVER函数中的REQUEST_URI可以取到index/index

现在我们在core目录下建一个route文件,内容为

<?php
namespace core\lib;
class route
{   
    public $controller;
    public $action;
    public function __construct()
    {
        /**
         * 1.隐藏index.php
         * 2.获取URL 参数部分
         * 3.返回对应控制器和方法
         */
        //p($_SERVER);
        if(isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] != '/'){
            // index/index
            $path = $_SERVER['REQUEST_URI'];
            $patharr = explode('/', trim($path,'/'));
             //p($patharr);
            if(isset($patharr[0])){  //取当前控制器
                unset($patharr[0]);
            }
            if(isset($patharr[1])){  //取当前方法
                $this->controller = $patharr[1];
            }
            unset($patharr[1]);
            if(isset($patharr[2])){
                $this->action = $patharr[2];
                unset($patharr[2]);
            }
            else
            {
                $this->action = 'index';
            }
            //p($patharr);
            //url 多余部分转化成 GET
            //id/1/str/2/test/3
            $count = count($patharr) + 3;
            $i = 3;
            while($i < $count){
                if(isset($patharr[$i + 1])){
                    $_GET[$patharr[$i]] = $patharr[$i + 1];    //如果参数的数量是奇数的话多出来的那一个就先不要他
                }
                $i =$i + 2;
            }
            //p($_GET);
        }else{
            $this->controller = 'index';默认控制器指向index控制器
            $this->action = 'index';//默认方法指向index方法
        }
    }
}


到此我们的路由类就创建完成了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值