MVC模式讲解(2)
有关MVC的其他常见做法:
前端控制器(请求分发器)
前一天内容。
目录结构的设定:
通常,我们会将一个MVC项目中的一些一些相应的文件,分门别类存放,结果就类似这样:
MVC项目/
index.php
/Controllers/
XX1Controller.class.php
XX2Controller.class.php
.....
/Models/
XX3Model.class.php
XX4Model.class.hpp
.....
/Views/
page1.htm.
page2.html
.....
/Framework/
BaseController.class.php
BaseModel.class.php
ModelFactory.class.php
MySQLDB.class.php
平台的划分
平台是什么?
平台只是人们都一个“网站群”的更大范围的划分,最常见的,就是,一个网站,几乎总是分为:
前台:
后台:
合作伙伴平台:
.......
平台,实际单词是“platform”,但在目录结构中,也常用Application(应用),因为,通常认为,一个平台,就是一个“应用”;
在应用中,这些平台,都会需要用到一些“共同的东西”,比如:
基础模型类;
基础控制器类;
数据库操作工具类;
........
那么,我们也可以将他们进一步“聚合”,聚合为一个“大的MVC”框架下的多个相对独立的“站点”;
因此,我们的整个MVC框架,又可以进一步提示为:
MVC框架/
index.php
/Framework/ //这是所有平台的公共的基础的部分
BaseController.class.php
BaseModel.class.php
ModelFactory.class.php
MySQLDB.class.php
/Application/ //这是所有平台的总目录
/front/ //前台
/Controllers/
/Modelss/
/Views/
/back/ //后台
/Controllers/
/Modelss/
/Views/
/partner/ //合作伙伴平台
/Controllers/
/Modelss/
/Views/
我的实例:

相应的,其中的所有请求(链接/提交/跳转),都又得加上平台的信息了!
所有用户列表的视图中添加一个链接:

然后,在back平台,分别建立3个目录,及对应文件:
back/
/Controllers/
AdminController.class.php
/Models/
AdminModel.class.php
/Views/
Login.html
其中,AdminController.class.php中代码为:

AdminModel.class.php中代码为:

Login.html中代码为:

并在index.php文件中,获取平台的信息,并修改相应链接:



基础常量的设定
我们在mvc中,会用到很多“相对固定的目录路径”,使用一个常量来表示,常常能够简化代码!
在inde.php页面中:

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

自动加载的实现

说明:
1,自动加载是指:在需要一个类的时候,自动去加载该类的对应类文件;
2,自动加载,不能自动加载“视图文件”;
禁止其他目录中文件的直接访问
找到站点www.php39.com的配置中的“目录权限设置项”:

修改为:

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


浙公网安备 33010602011771号