CakePHP 概述
欢迎来到 CakePHP Cookbook,这是一本使用 CakePHP web 应用程序框架开发一块蛋糕的的手册!
本手册假定你了解 PHP,并且有面向对象编程(OOP)方面的基础知识。 框架中的不同功能使用了不同的技术 —— 类似于 SQL、JavaScript 和 XML ——本手册不准备讲解这些技术,仅仅说明其在相关上下文中如何使用。
- 什么是 CakePHP?它如何使用?
- 理解 模型 - 视图 - 控制器
- 从哪儿获取帮助
什么是 CakePHP?它如何使用?
CakePHP 是一个 免费的, 开源的, 快速发展的 PHP 框架 。 它是创建 web 应用的基本程序结构。我们的主要目标是让你能够在一个结构上快速开始工作 —— 不需要太复杂。
CakePHP 从单调的 web 开发中解脱出来。我们为你提供开始编码的全套工作,包括你的应用程序的具体逻辑。 代替每次重复发明轮子的是坐下来开始一个新项目,检出 CakePHP 的代码副本然后鼓起勇气开始编程。
CakePHP 拥有活跃的CakePHP has an active 开发团队 和社区,给项目带来巨大的价值。除了让你摆脱重复发明轮子,使用 CakePHP 还意味着你的应用程序的核心是易于测试并不断提高的。
以下是一些当你使用 CakePHP 时能享受到的特性的快速列表:
- 活跃、友好的 社区
- 富有弹性的 许可
- 兼容 PHP 5.2.8 及更高版本。
- 整合的数据库 CRUD 操作。
- 应用程序 脚手架.
- 代码生成。
- MVC 设计风格。
- 清晰的请求颁发、自定义的 URL 和路由。
- 内置的 校验.
- 快速灵活的 模板 (PHP 语法,带有助手)。
- Ajax、JavaScript、HTML 表单等等方面的视图助手。
- Email、Cookie、安全、Session和请求处理等的组件。
- 灵活的 ACL.
- 数据清除。
- 灵活的 缓存.
- 本地化。
- 几乎不需要对 Apache 进行配置就可以在任意站点目录内工作。
理解 模型 - 视图 - 控制器
CakePHP 遵循 MVC 软件设计模式。 使用 MVC 编程将应用程序分隔为三部分:
模型层
模型层是在你的应用程序中实现商业逻辑的那一部分。 它负责检索数据并将其转换成对你的应用程序有意义的概念。包括加工、校验、连接或者与数据处理相关的其他任务。
乍一看,模型对象可以被当成与你的应用程序所使用的数据交互的第一层。 但总体来说,它们是贯穿了你的应用程序实现的主体概念。
在社会网络中,模型层关注的任务包括保存用户数据、保存朋友关系、存储和检索用户照片、为寻找新的朋友提供建议等。此时,模型对象可以被当成 “Friend”、”User”、”Comment” 或者 “Photo”.
视图层
视图渲染可视化数据。它被从模型中分离出来,负责使用它可用的信息,产生应用程序中需要的可视化接口。
例如:当模型层返回一个数据集,视图就用它渲染一个包含这些数据集的 HTML 页面。或者为其他需要提供一个 XML 格式的结果。
视图层不仅是数据的 HTML 或者文本表示,它还能用于传送你需要的各种格式,比如视频、音乐、文档或者你能想到的其他所有格式。
控制器层
控制器层处理来自用户的请求。它借助模型和视图层渲染一个回应。
控制器可以被看作一个照看完成一个任务的全部所需资源并委托给正确人员的管理员。它等待客户端的请求,根据认证或授权规则检验其有效性,将数据委托给模型进行读取或处理,选择客户端所期望的数据的正确表现形式,并最终将此次渲染委托给视图层。
CakePHP 请求生命周期
插图: 1: CakePHP中的标准 MVC 请求
标准的 CakePHP 请求生命周期起始于一个用户请求应用程序中的一个页或者资源。分发器先计算这个请求,并选择一个正确的控制器对象处理它。
一旦请求到达控制器,它将请求传递给模型层计算所有的数据,根据需要进行读取或保存操作。 在此次传递结束后,控制器将来自模型的数据继续委托给正确的视图对象,生成输出结果。
最后,输出一生成,它就将其渲染给用户。
应用程序中的每个请求几乎都遵循这个基本模式。随后我们将向 CakePHP 加入一些具体的详细内容,在我们继续进行时,记住这一点。
好处
为什么要使用 MVC?因为它是一种经过实践证明的有效的软件设计模式,可以使应用程序变成为可维护的、模块化的、快速的开发包。 将应用程序任务分解为分隔模型、视图、控制器任务,使得创建应用程序更容易。 新特性更易于添加,修改旧特性也很容易。模块化和分离设计还允许程序员和设计师同时工作,能够快速开发原型。 分离还允许程序员在改变程序的一个部分时不影响其他部分。
如果你从没有用这种方法创建过应用程序,需要你花费一些时间学习,但是我们相信一旦你使用 CakePHP 建立了第一个应用程序,你就不会再想使用其他方式了。
要开始你的第一个 CakePHP 应用程序, 现在就试着建立一个博客 吧。
从哪儿获取帮助
Cookbook
本手册将是你获取答案的首选。和许多开源项目一样,我们经常会有新的朋友。试着自己先回答自己的问题。答案可能会有点慢,但是会保存很久 —— 你还能帮我们减轻负担。手册和 API 都有在线版本。
面包店
CakePHP 面包店是 CakePHP 所有事物的集结地。可以从中找到教程、案例和代码示例。一旦你熟悉了 CakePHP,登录论坛并分享你的知识,就可以名利双收:)
测试用例
如果你觉得 API 提供的信息仍然不够,可以浏览随 CakePHP 一直提供的测试用例。它们为每个类的功能和数据成员的用法提供了实际的例子。
lib/Cake/Test/Case
IRC 频道
IRC Channels 在 irc.freenode.net:
- #cakephp – 一般性讨论
- #cakephp-docs – 文档
- #cakephp-bakery – 面包店
如果你遇到了障碍,在 CakePHP IRC 频道向我们发牢骚。 来自开发团队的成员常常会在那,尤其是北美或南美的用户常常会在那泡一整天。 我们喜欢听到你的声音,如果你需要帮助,想要在你所在的区域寻找用户,或者想捐赠你那辆全新的运动型轿车。
Google 小组
http://groups.google.com/group/cake-php
CakePHP 还有一个非常活跃的 Google 小组。 它是找到归档答案、常见问题和当前问题的回复的上佳资源。