CakePHP旨在使常见的Web开发任务变得简单和容易。通过提供一个一站式工具箱,让您可以开始使用CakePHP的各个部分,无论是一起工作还是分开工作,都能很好地完成任务。
本概述的目标是介绍CakePHP中的一般概念,并快速概述这些概念在CakePHP中的实现方式。如果您迫不及待地想开始一个项目,您可以 从教程开始,或者 深入文档。
CakePHP提供了一个基本的组织结构,涵盖了类名、文件名、数据库表名和其他约定。虽然这些约定需要一些时间来学习,但是遵循CakePHP的约定,您可以避免不必要的配置,并创建一个统一的应用程序结构,使得处理各种项目变得简单。:doc:`约定章节 </intro/conventions>`介绍了CakePHP使用的各种约定。
模型层代表应用程序中实现业务逻辑的部分。它负责检索数据并将其转换为应用程序中的主要有意义的概念。这包括处理、验证、关联或处理数据相关的其他任务。
在社交网络的情况下,模型层将处理保存用户数据、保存好友关联、存储和检索用户照片、查找新朋友的建议等任务。模型对象可以被认为是”Friend”、”User”、”Comment”或”Photo”。如果我们想从我们的``users``表中加载一些数据,我们可以这样做:
use Cake\ORM\Locator\LocatorAwareTrait;
$users = $this->getTableLocator()->get('Users');
$resultset = $users->find()->all();
foreach ($resultset as $row) {
echo $row->username;
}
您可能注意到,在开始使用数据之前,我们没有写任何代码。通过使用约定,CakePHP将使用尚未定义的标准类来处理表和实体类。
如果我们想创建一个新用户并保存它(带有验证),我们可以这样做:
use Cake\ORM\Locator\LocatorAwareTrait;
$users = $this->getTableLocator()->get('Users');
$user = $users->newEntity(['email' => 'mark@example.com']);
$users->save($user);
视图层渲染建模数据的展示。作为独立于模型对象的一部分,它负责使用可用的信息生成应用程序可能需要的任何呈现界面。
例如,视图可以使用模型数据来渲染包含它的HTML视图模板,或者为其他人消费的XML格式化结果:
// 在视图模板文件中,我们将为每个用户渲染一个'element'。
<?php foreach ($users as $user): ?>
<li class="user">
<?= $this->element('user_info', ['user' => $user]) ?>
</li>
<?php endforeach; ?>
视图层提供了一些扩展点,如 View Templates、Elements 和 View Cells,让您可以重用呈现逻辑。
视图层不仅仅局限于数据的HTML或文本表示。它可以用于传递常见的数据格式,如JSON、XML,并且通过可插拔的架构,您可能需要的任何其他格式,如CSV。
控制器层处理用户的请求。它负责在模型层和视图层的帮助下渲染响应。
控制器可以被看作是一个经理,确保完成任务所需的所有资源被委派给正确的工作者。它等待客户端的请求,根据身份验证或授权规则检查其有效性,将数据提取或处理委托给模型,选择客户端接受的呈现数据类型,并最终将渲染过程委托给视图层。用户注册控制器的一个示例可能是:
public function add()
{
$user = $this->Users->newEmptyEntity();
if ($this->request->is('post')) {
$user = $this->Users->patchEntity($user, $this->request->getData());
if ($this->Users->save($user, ['validate' => 'registration'])) {
$this->Flash->success(__('You are now registered.'));
} else {
$this->Flash->error(__('There were some problems.'));
}
}
$this->set('user', $user);
}
您可能注意到,我们从未明确地渲染过视图。CakePHP的约定将负责选择正确的视图并使用我们使用``set()``准备的视图数据进行渲染。
现在您已经熟悉了CakePHP中的不同层次,让我们来回顾一下CakePHP中的请求周期是如何工作的:
典型的CakePHP请求周期始于用户请求应用程序中的页面或资源。在高层次上,每个请求经过以下步骤:
Web服务器的重写规则将请求定向到 webroot/index.php。
加载并绑定您的应用程序到一个``HttpServer``。
初始化您的应用程序的中间件。
请求和响应通过您的应用程序使用的PSR-7中间件进行分派。通常包括错误捕获和路由。
如果中间件没有返回响应并且请求包含路由信息,则选择控制器和操作。
调用控制器的操作,并且控制器与所需的模型和组件进行交互。
控制器将响应创建委托给视图,以生成由模型数据产生的输出。
视图使用Helpers和Cells生成响应正文和头部。
响应通过 Middleware 发送回到Web服务器。
``HttpServer``将响应发送给Web服务器。
希望这个快速概述引起了您的兴趣。CakePHP中的一些其他出色功能包括:
下一步是 下载CakePHP,阅读 教程并构建令人惊叹的东西。