有关MVC的常见做法

来源:互联网 发布:美宝莲淘宝旗舰店 编辑:程序博客网 时间:2024/04/28 00:13

    • 请求分发器前端控制器
      • 它的作用是
      • 目录结构的设定
    • 基础常量的设定
    • 自动加载的实现
    • 禁止其他目录中的文件被直接访问

请求分发器(前端控制器):

先观察现有的控制器:
这里写图片描述
问题:
有没有可能使用一个参数,在每次页面发生请求的时候,都带上“要使用的”控制器?
如果可以,我们就可以将代码进一步进行简化和提升。

提升代码如下:
这里写图片描述
此时,UserController类和ProductConroller类中,没有其他代码了,只有“纯类”的定义代码。
这里写图片描述
在所有连接、跳转、表单提交中,都有了新的参数提交:
这里写图片描述

这就是请求分发器(前端控制器)

它的作用是:

1.根据传过来的c请求数据,决定使用哪个控制器——上图示例中有默认值,为User2.根据传过来的a请求数据,决定使用哪个动作(方法)——上图示例中有默认值,为Index.




目录结构的设定

通常,我们会将一个MVC项目中的一些相应的文件,分门别类的存放,结果类似于:
MVC项目/
index.php
/Controllers/
XX1Controller.class.php
XX2Controller.class.php

/Models/
XX3Model.class.php
XX4Model.class.php

/Views/
page1.html
page2.html

/Framework/
BaseController.class.php
BaseModel.class.php
ModelFactory.class.php
MySQLDB.class.php




基础常量的设定

我们在MVC中,会用到很多“相对固定的目录路径”,使用一个常量来表示它,常常能够简化代码。例如,在index.php页面中:

这里写图片描述

相应的,其他一些需要载入文件的位置(主要是“控制器”中载入视图),也可以简化,比如:

这里写图片描述




自动加载的实现

这里写图片描述

说明:
1.自动加载是指:在需要一个类的时候,自动去加载该类的对应类文件。
2.自动加载,不能自动加载“视图文件”;




禁止其他目录中的文件被直接访问

找到站点的配置项中的“目录权限设置项”(站点配置-apache-conf-extra-httpd-vhosts.conf)

这里写图片描述
修改如下:这里写图片描述
重启apache

然后,在mvc框架的application目录和framework目录下,都放置一个相同的文件(.htaccess)。
其内容为(只有一行):
Deny from All

示例:
这里写图片描述

这里写图片描述

0 0
原创粉丝点击