基本概念
Section 1
Introduction
这一间是一个简短的,不太专业的MVC介绍。因为在cake中也实现了它。如果您是一位MVC的新手,这一章就是为您准备的。 我们讨论一下MVC的基本概念,然后渐渐转到我们在CakePHP中的MVC实现,并给出使用了MVC范式的cakephp的几个例子。
Section 2
The MVC Pattern
“模块–视–控制器”是一个软件设计模式,它会使您的逻辑同您的代码相分离,使产品更具复用性,易维护性,总体来说是更棒一些。”模块–视–控制器”设计模式最先被一个叫”author group Gang of Four”的组织提出来。Dean Helman 这样写: (从Objective Toolkit Pro white paper摘录的一段):
MVC模式只是一种将一个程序甚至只是一个程序的一部分划分为三个层面:模块,视,控制器。
输入->处理 -> 输出
控制-> 模块 ->视
“用户输入,抽象和建模,以可视化的界面返回给用户,这些被分开了,并分别被模块,视,控制器处理。控制器解释用户的鼠标和键盘的输入,并将这些用户动作转化为发送给模块或视的命令,以便引起适当的动作。model管理一个或更多的数据元素,回应对这些元素的状态的问询,回应那些改变这些元素的状态的指令.View层面就管理显示器的一个矩形区域,确保能够以文字和图形的形式把数据显示给用户。 “
在Cake中,Model描述数据表或记录,以及他们之前的关系,或与其他数据表和记录的关系。Model也包含数据检验规则,当数据被插入或修改时就会被应用。View管理Cake的输出表现,这些实际上是一些包含了PHP代码的HTML文件。Cake的控制器(controller)处理服务器上的请求。它接用户的输入(URL和提交的数据),调用逻辑过程,使用Model来将数据从数据库中读出或写入到数据库中,或者其他什么地方。最后,控制器把要输出的数据交给适当的View层文件来进行输出。
为了使您组织您的程序尽可能地简单方便,我们使用了这样一种方式。它不仅可以控制您程序内部各个部件的关系,还可以让您知道您的程序是怎么存储的。下面就来介绍。
Section 3
Cakephp的布署简介
当您在您的服务器上解开文件包,您会看到这三个目录:
app
cake
vendors
cake 目录就是Cake的核心库文件,您就让它呆那好了,别去碰它。
app 目录就是用来放置您的程序的地方。将cake 目录和 app 目录分开,是为了方便您创建许多应用,但是这些应用之前还是共享一个Cake 库。这也使得Cakephp的升级比较方便。您只需要下载最新版的CakePHP库文件并覆盖当前文件。不用担心会覆盖您写好的程序文件。
您可以使用vendors目录来放置第二方的库文件。以后您将会了解更多关于vendors,现在您只需要记住用使用Cake的 vendor() 函数就可以访问您放置在vendors目录中的类.
现在我们看一看app目录下的完整的文件结构。
/app
/config - Contains config files for your database, ACL, etc.
/controllers - Controller放在这里
/components - 组件放在这里
/index.php - Allows you to deploy cake with /app as the DocumentRoot
/models - Models go here
/plugins - Plugins go here
/tmp - Used for caches and logs
/vendors - Contains third-party libaries for this application
/views - Views go here
/elements - Elements, little bits of views, go here
/errors - Your custom error pages go here
/helpers - Helpers go here
/layouts - Application layout files go here
/pages - Static views go here
/webroot - The DocumentRoot for the application
/css
/files
/img
/js
/cake - Cake’s core libraries. Don’t edit any files here.
index.php
/vendors - Used for server-wide third-party libraries.
VERSION.txt - Let’s you know what version of Cake you’re using.