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路由功能就完成了。。。

(0)

相关推荐

  • PHP MVC框架skymvc支持多文件上传

    本文实例为大家分享了skymvc实现文件上传的具体代码,供大家参考,具体内容如下 1.代码upload.ctrl.php <?php class uploadControl extends skymvc{ public function __construct(){ parent::__construct(); } public function onDefault(){ $this->smarty->display("upload/default.html"); }

  • php实现简单的MVC框架实例

    本文实例讲述了php实现简单的MVC框架.分享给大家供大家参考.具体如下: 在开始之前需要知道的知识 1.php基础知识 2.单一入口, 不知道的可以看看这里 (http://www.jb51.net/article/72621.htm) 具备以上两点, 那我们就可以开始啦. 哈哈! 先来说一下程序的执行流程 首先有个入口文件, 然后初始化一些程序, 之后根据请求调用不同的类和方法 首先我们弄一个入口文件 Index.php 来看看代码 <?php require "Init.php&qu

  • 搭建自己的PHP MVC框架详解

    本文详细讲述了搭建自己的PHP MVC框架的方法.分享给大家供大家参考,具体如下: 前言 说到写PHP的MVC框架,大家想到的第一个词--"造轮子",是的,一个还没有深厚功力的程序员,写出的PHP框架肯定不如那些出自大神们之手.经过时间和各种项目考验的框架.但我还是准备并且这么做了,主要是因为: 认为有关PHP的方方面面都了解了,但自己学习PHP的时间还短,基础并不扎实,很多常用函数的参数还偶尔要查手册,而且对于PHP的一些较新的特性如命名空间.反射等只是简单的看过,并没有能实际应用过

  • PHP简单的MVC框架实现方法

    在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中. 1.概述 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 2.代码结构 3.代码实现 <?ph

  • PHP的MVC模式实现原理分析(一相简单的MVC框架范例)

    他们的工作原理大家应该也比较感兴趣,下面我说说一个mvc框架长什么样. 路由机制 在互联网我们都是通过url提供服务,因此不同的url有不同的服务.用户访问不同的页面也就获得了不同的服务.那么我们的服务是如何通过url来区分不同的服务呢. 我们的web程序就要通过url寻找到不同的文件,进行不同的业务逻辑处理.我们的路由机制就是根据url,寻找到对应的controller,和action,然后由action进行具体的业务逻辑处理. 一个简单的controller 复制代码 代码如下: //定义一

  • php打造属于自己的MVC框架

    一.文件结构 建立3个文件夹 controller文件夹存放控制器文件 view文件夹存放视图文件 model文件夹存放数据文件 建立1个index.php 作为唯一入口 二.控制器 我们在controller文件夹下建立一个democontroller.php文件,文件内容如下 复制代码 代码如下: <?php class DemoController { function index() { echo('hello world'); } } /* End of file democontro

  • CodeIgniter php mvc框架 中国网站

    我们很高兴的宣布 CodeIgniter 1.6.2 版正式发布.本次发布包括超过 29 个 BUG 修复和 34 个功能补充和增强.这些内容包括:改善"Active Record"与事务性数据库的交互:引入一个常量文件:改善 Zip 类库:一个兼容性辅助函数:为文件辅助函数增加新的功能:从框架文件中删除 PHP 的关闭标记:还有许多其他的内容.更多细节请查看更改记录! 欢迎使用 CodeIgniter CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包

  • php实现最简单的MVC框架实例教程

    本文以一个实例的形式讲述了PHP实现MVC框架的过程,比较浅显易懂.现分享给大家供大家参考之用.具体分析如下: 首先,在学习一个框架之前,基本上我们都需要知道什么是mvc,即model-view-control,说白了就是数据控制以及页面的分离实现,mvc就是这样应运而生的,mvc分为了三个层次,而且三个层次各司其职,互不干扰,首先简单介绍下,各个层次:view即是视图,也就是web页面,control即是控制器 向系统发出指令的工具,model 简单说是从数据库中取出数据进行处理. MVC的工

  • 手把手编写PHP框架 深入了解MVC运行流程

    1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). PHP中MVC模式也称Web MVC,从上世纪70年代进化而来.MVC的目的是实现一种动态的程序设计,便于后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能.除 此之外,此模式通过对复杂度的简化,使程序结构更加直观.软件系统通过对自身基本部份分离的同时,也赋予了各个基本部分应有的

  • 基于PHP Web开发MVC框架的Smarty使用说明

    一.Smarty简明教程 1.安装演示 下载最新版本的Smarty-3.1.12,然后解压下载的文件.接下来演示Smarty自带的demo例子. (1)下载地址:http://www.smarty.net/download(2)在你的WEB服务器根目录下建立新目录,这里我在/var/www下创建yqting/目录,然后将解压之后的目录中的demo/和libs/目录复制到/var/www/yqting/目录下. (3)这里要特别注意demo/目录下cache/和template_c/两个目录,一定

  • thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】

    本文讲述了thinkPHP5.0框架整体架构.分享给大家供大家参考,具体如下: ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织. MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V).控制器(C),它们各自处理自己的任务. 5.0的URL访问受路由决定,如果关闭路由或者没有匹配路由的情况下,则是基于: http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作

随机推荐