自定义MVC框架-入口文件

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

内容简介:当前项目 中存在很多的模型文件和控制器文件,还有一些视图文件那么如何访问这些类以及文件呢?当前的方法时,通过浏览器访问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框架-入口文件

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


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

查看所有标签

猜你喜欢:

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

Visual Thinking

Visual Thinking

Colin Ware / Morgan Kaufmann / 2008-4-18 / USD 49.95

Increasingly, designers need to present information in ways that aid their audiences thinking process. Fortunately, results from the relatively new science of human visual perception provide valuable ......一起来看看 《Visual Thinking》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具