本节将简短地介绍 MVC 的概念以及他们如何在Cake中实现的。如果你是初学 MVC (模型-视图-控制器),那么你一定要看这一章。我们将从一个通用的 MVC 概念的讨论开始,并逐渐进入特定的 CakePHP 中的 MVC 应用,最后使用MVC模式演示一些简单的 CakePHP 的例子。
模型--视图--控制器(Model-View-Controller)是一种软件设计模式,它可帮助你有逻辑地划分代码,使代码可重用、可维护。模型--视图--控制器最先由Gang of Four的作者小组描述出来。Dean Helman 写到(以下节选自Objective Toolkit Pro白皮书):
“MVC 范例是一种分解应用的方法,或者甚至仅仅是一个应用接口的一小部分,它将应用分解成三个部分:模型、视图和控制器。开发 MVC 最先的目的,是用来将原有的输入、处理、输出的角色映射到 GUI 的领域中”。
输入 → 处理 → 输出(控制器 → 模型 → 视图)
数据库表/记录,以及它和其他表和记录之间的关系。模型也可以包含校验规则,它会在插入或者更新模型数据时应用。视图代表了 Cake 的视图文件,这些是一些普通的嵌入了 PHP 代码的 HTML 文件。控制器处理服务器的请求。它获取用户输入(URL 和 POST 数据),应用业务逻辑,使用模型来从数据库和其他数据源读取数据或者写入数据,最后,将数据输出到合适和视图文件。
在 Cake 的术语中,模型代表了一个特定的
为了能尽可能更容易地组织应用程序,Cake使用了这个模式不仅仅用来管理对象如何在应用之中进行交互,还管理了如何存放文件。
当你在服务器上解压开 Cake 安装包,你会发现有四个文件夹—app
,cake
,tmp
,vendors
。其中cake
文件夹是 Cake 的核心库所放的地方, 基本上你不需要动它。
其实它并非一直这样—— 在CakePHP的0.10.0版本发布之前,所有东西都是放在在一个文件夹cake下面的,这种结构被证明有一些问题的存在:
tmp
目录可以用于不同的 Cake 操作,比如baking(自动创建新的php文件),缓存和日志记录。 vendors
目录文件夹来存放第三方库文件。下面的列表显示了主要的文件夹和它们的基本目的:
cake
(根目录)
-
app
(这里存放你的应用程序逻辑)-
config
(特定于应用的配置文件,比如ACL,core, database connection,routes, paths, 和tags) -
controllers
(这里放置控制器)-
components
(组件,也就可以协助控制逻辑的类,存放的地方)
-
-
index.php
(cake中有三个该文件:它令用户可以用不同的方法部署 Cake 应用。) -
models
(放置模型) -
plugins
(放置插件或者第三方应用) -
tmp
(用于日志、baking等等) -
views
(与视图相关文件)-
elements
(小的经常重复使用的布局零件) -
errors
(存放错误页面) -
helpers
(自定义的助手类文件) -
layouts
(页面布局) -
pages
(PagesController管理的静态内容)
-
-
webroot
(这个目录用作网站的根目录,可以并将公共的文件放在这里)-
css
-
files
-
img
-
js
-
-
-
cake
(库文件,最好不要动。) -
index.php
-
vendors
(放第三方库文件)