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

如下所示:

 

 

 

posted @ 2016-08-04 14:58  z2168465  阅读(113)  评论(0)    收藏  举报