“胖”模型是一件好事,但是,尽量不要将不应该在模型中的东西放在模型中。在 MVC 中,模型应该处理与数据相关的所有事情。
胖模特
“胖”模型概念是通过将数据相关代码移动到模型中来减少控制器中的代码量。例如:
取而代之的是; (在您的控制器中):
public function view($id)
{
$this->request->data = $this->SomeModel->find('first', array(
'fields' => array(
// list of fields to retrieve
),
'conditions' => array(
// conditions
),
// etc.
);
}
将查找指令移动到模型中的方法并使用它:
public function view($id)
{
$this->request->data = $this->SomeModel->someMethod($id);
}
放置代码的其他位置
与数据无关的代码也可以移到您的控制器之外(使其“瘦”)。 CakePHP 提供了将代码移动到的其他位置,例如 Component
然后在你的控制器里面;
这个:
public function view($id)
{
$this->request->data = $this->SomeModel->someMethod($id);
// use functionality of a component
$this->SomeComponent->doSomething();
}
通过事件触发功能
为了将代码和逻辑保留在控制器之外,CakePHP 2.x 现在提供了一个“事件”系统。这允许您在发生特定事件时执行代码。您可以通过事件传递附加信息(事件将成为通过您的应用程序的“通信渠道”)。
为某些事件发送电子邮件就是一个很好的例子。 CakePHP 还使用发送邮件来说明 CakePHP 中的事件系统;这可能是您正在寻找的:
Dispatching Events - send emails