PHP MVC框架路由学习笔记

 更新时间:2016年03月02日 11:11:51   投稿:mrr  
这篇文章主要介绍了PHP MVC框架路由学习笔记的相关资料,需要的朋友可以参考下

提到PHP开发web,自然离不开开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等。。。

第一篇先来简单点的,说说MVC框架的路由功能。。。

一般的单入口框架路由都是这样的结构:

domain/index.php/classname/functionname/var1/var2

这里的index.php 就被称为入口文件。。。对于服务器而言,你这里访问的就只有index.php 后面调用的controller 和里面的方法,甚至传值都是在框架内部基于PHP层面实现的。

Talk is cheap, show you the code !!

首先,先建立好下面的文件结构

我们来动手试试,怎么才能访问到controllers里面的文件。。。

在index.php里面输入以下内容

print_r($_SERVER);

然后访问 以下地址试试。

yourdomain/index.php/class/function/var1

这里作者我是用本地环境的,我访问的地址是localhost/MVC/index.php/class/function/var1

我贴出最重要的2个变量

[REQUEST_URI] => /MVC/index.php/class/function/var1
[SCRIPT_NAME] => /MVC/index.php

其实路由最基本的原理就在这里:

通过这2个变量来提取url地址里的class 和 function,参数等,然后把class include进来,通过PHP的回调函数call_user_func_array 调用对应的function和传递相应的参数。

接下来上代码,读代码应该比我写的易懂。哈哈~~

index.php 的内容如下

<?php 
# 定义application路径 
define(‘APPPATH', trim(__DIR__,'/')); 
# 获得请求地址 
$root = $_SERVER['SCRIPT_NAME']; 
$request = $_SERVER['REQUEST_URI']; 
$URI = array(); 
# 获得index.php 后面的地址 
$url = trim(str_replace($root, ”, $request), ‘/'); 
# 如果为空,则是访问根地址 
if (empty($url)) 
{ 
# 默认控制器和默认方法 
$class = ‘index'; 
$func = ‘welcome'; 
} 
else 
{ 
$URI = explode(‘/', $url); 
# 如果function为空 则默认访问index 
if (count($URI) < 2) 
{ 
$class = $URI[0]; 
$func = ‘index'; 
} 
else 
{ 
$class = $URI[0]; 
$func = $URI[1]; 
} 
} 
# 把class加载进来 
include(APPPATH . ‘/' . ‘application/controllers/' . $class . ‘.php'); 
#实例化 
$obj = new ucfirst($class); 
call_user_func_array( 
# 调用内部function 
array($obj,$func), 
# 传递参数 
array_slice($URI, 2) 
); 

在application/controllers 里面添加下面2个文件

index.php 用于作为默认控制器

<?php 
class Index 
{ 
function welcome() 
{ 
echo ‘I am default controller'; 
} 
} 
?> 
hello.php
<?php 
class Hello 
{ 
public function index() 
{ 
echo ‘hello world'; 
} 
public function name($name) 
{ 
echo ‘hello ‘ . $name; 
} 
} 
?>

测试一下看看,能不能访问了。根据上面的路由结构。我们来试试

这个访问正常,正确调用了hello这个class内部的name方法,然后把参数barbery传递过去了。。。

再试试不输入function name,看看能不能默认调用index。。

答案也是可以的。。。

最后一个,访问root地址看看

也正确的映射到了默认控制器上。。。

ok,一个简单的MVC路由功能就完成了。。。

相关文章

  • WordPress后台中实现图片上传功能的实例讲解

    WordPress后台中实现图片上传功能的实例讲解

    这篇文章主要介绍了WordPress后台中实现图片上传功能的实例讲解,包括多个图片上传表单功能的实现,需要的朋友可以参考下
    2016-01-01
  • Thinkphp5文件包含漏洞解析

    Thinkphp5文件包含漏洞解析

    这篇文章主要为大家介绍了Thinkphp5文件包含漏洞解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Yii2语言国际化自动配置详解

    Yii2语言国际化自动配置详解

    这篇文章主要介绍了Yii2语言国际化自动配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • php项目接入xxl-job调度系统的示例详解

    php项目接入xxl-job调度系统的示例详解

    这篇文章主要介绍了php项目接入xxl-job调度系统的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 浅谈PHP中的数据传输CURL

    浅谈PHP中的数据传输CURL

    下面小编就为大家带来一篇浅谈PHP中的数据传输CURL。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • php爬取天猫和淘宝商品数据

    php爬取天猫和淘宝商品数据

    这篇文章主要为大家详细介绍了php爬取天猫和淘宝商品数据的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • PHP 实现浏览记录并按日期分组

    PHP 实现浏览记录并按日期分组

    这篇文章主要介绍了PHP 实现浏览记录并按日期分组的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-05-05
  • thinkPHP框架整合tcpdf插件操作示例

    thinkPHP框架整合tcpdf插件操作示例

    这篇文章主要介绍了thinkPHP框架整合tcpdf插件操作,结合实例形式较为详细的分析了thinkPHP框架整合tcpdf插件的具体步骤、相关操作技巧与注意事项,需要的朋友可以参考下
    2018-08-08
  • PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解

    PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解

    这篇文章主要介绍了PHP+fiddler抓包采集微信文章阅读数点赞数的思路,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Laravel用户授权系统的使用方法示例

    Laravel用户授权系统的使用方法示例

    这篇文章主要给大家介绍了关于Laravel用户授权系统使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09

最新评论