自定义MVC框架-入口文件

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

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

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


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

查看所有标签

猜你喜欢:

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

再看电商

再看电商

黄若 / 电子工业出版社 / 2014-7-1 / CNY 39.00

电商行业在中国经历了十年的高速增长。如果说十年前的网上购物是新鲜潮人的尝试的话,那么今天几亿网购人群的规模,零售市场18,000亿人民币的年交易额,正催生着一个改变人们生活习惯的全新行业。互联网正在从各个维度重新定义生产、品牌、娱乐、传播、消费,电商毫无疑问的在购物领域影响着越来越多人的生活。同时,这个行业连年亏损,顾客服务良莠不齐,也受到广泛关注。作者从地面零售到电子商务,从跨国公司高管到管理民......一起来看看 《再看电商》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具