自定义MVC框架-入口文件

栏目: 后端 · 发布时间: 7年前

内容简介:当前项目 中存在很多的模型文件和控制器文件,还有一些视图文件那么如何访问这些类以及文件呢?当前的方法时,通过浏览器访问index.php,然后在此文件中 ,创建需要的控制器类的对象,再调用此类的方法

1. 抛出问题

当前项目 中存在很多的模型文件和控制器文件,还有一些视图文件

那么如何访问这些类以及文件呢?

当前的方法时,通过浏览器访问index.php,然后在此文件中 ,创建需要的控制器类的对象,再调用此类的方法

require_once './controller/UsersController.class.php';
$c=new UsersController();
$c->select();

那么如果要访问NewsController中的select方法怎么办呢?

修改index.php

require_once './controller/NewsController.class.php';
$c=new NewsController();
$c->select();

访问NewsController中的 add 方法呢?

还要无限制的修改下去吗?

当然不是!

2. 解决问题

我们将主动权交给用户,用户告诉index.php想要访问哪个控制器和哪个方法,index.php就实例化对应的类,并调用对应的方法,而不是像上面那样将控制器名称与方法名称写死

修改index.php 代码如下

//获取用户请求的控制器名称(不带Controller后缀)
$c=$_GET['c'];
//获取用户请求的方法名称(不带Action后缀)
$a=$_GET['a'];
//为类名添加Controller后缀
$className=$c."Controller";
//为方法名称添加Action后缀
$actionName=$a."Action";
echo $className;
echo '<br>';
echo $actionName;

然后在浏览器中输入如下地址,在index.php后面传递参数

自定义MVC框架-入口文件

总结

1)为了输入方便,请求控制器和方法时无需输入后缀,index.php获取后再拼接完整类名和方法名称

2)输入的控制器名称和方法名称都是小写,实际的类型和方法名称是既有大写,也有小写,但是 PHP 对于类名和方法名称是不区分大小写的,所以这么些也可以

下面继续修改index.php 代码,做到自动实例化控制器类,并调用请求的方法名称

在上面代码的基础上追加如下代码

//引入控制器所在的文件
require_once './controller/'.$className.'.class.php';
//创建对象
$controller_name=new $className();
$controller_name->$actionName();

浏览器中输入如下地址访问

自定义MVC框架-入口文件

如果像访问其他控制器和方法,只需要更换上面参数 c 和 a 的值即可

总结:

通过浏览器访问index.php,php再根据用户的请求调用对应的控制器和方法。这个index.php 就是我们这个程序的访问入口,此文件就叫做入口文件

3. 遗留问题

如果用户在地址栏输入如下地址,则会报错

自定义MVC框架-入口文件

原因在于没有传递参数c和参数a

index.php 在执行如下代码时获取的就是 NULL,导致index.php 不知道要获取哪个控制器

解决方案就是,如果用户没有传递参数c或者a,就为其设置一个默认值

如下代码

//获取用户请求的控制器名称(不带Controller后缀)
$c=isset($_GET['c'])?$_GET['c']:'users';
//获取用户请求的方法名称(不带Action后缀)
$a=isset($_GET['a'])?$_GET['a']:'select';

这样,再输入如下地址访问时

自定义MVC框架-入口文件

此种方法正好解决了我们设置网站默认访问页面的问题


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

CSS 3实战

CSS 3实战

成林 / 机械工业出版社 / 2011-5 / 69.00元

全书一共分为9章,首先从宏观上介绍了CSS 3技术的最新发展现状、新特性,以及现有的主流浏览器对这些新特性的支持情况;然后详细讲解了CSS 3的选择器、文本特性、颜色特性、弹性布局、边框和背景特性、盒模型、UI设计、多列布局、圆角和阴影、渐变、变形、转换、动画、投影、开放字体、设备类型、语音样式等重要的理论知识,这部分内容是本书的基础和核心。不仅每个知识点都配有丰富的、精心设计的实战案例,而且详细......一起来看看 《CSS 3实战》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具