MVC模型,它们用于什么?

Mis*_*ded 2 php cakephp cakephp-model

现在是时候了解MVC了,所以这就是我想要做的事情; 而且我无法获得模型应该做的事情.根据维基百科,一个模型:

该模型管理应用程序域的行为和数据,响应有关其状态的信息请求(通常来自视图),并响应指令以更改状态(通常来自控制器).在事件驱动的系统中,模型在信息发生变化时通知观察者(通常是视图),以便他们能够做出反应.

在CakePHP中,你应该以这种非常简单的方式建立一个模型:

<?php

class Posts extends AppModel {
    var $name = 'Posts';
}

?>
Run Code Online (Sandbox Code Playgroud)

所以,如果我想要,例如,我的数据库中的最后10个帖子,我会创建一个看起来像这样的控制器:

<?php

class PostsController {
    function retrieve_latest($number = 10) {
        $posts = $this->Users->find(array(
                'fields' => '*',
                'order' => 'posts.post_id DESC',
                'limit' => $number,
                'page' => '1',
                'conditions' => array('posts.post_display == 1')
        ));

        $this->set('posts', $posts);
    }
}

?>
Run Code Online (Sandbox Code Playgroud)

而这个人会传递一个调用posts我视图的变量,然后相应地渲染它.问题是,我的模型不应该做任何其他事情吗?因为如果它简单,那么自定义模型就没有意义了,我的意思是,它只是模型类的空扩展.

dec*_*eze 5

这个"对模型类的空扩展"已经做了很多事情:它连接到数据库,并且一直处理检索和保存数据.它应该做更多的事情,包括保存验证规则,这些规则在您写入数据库时​​强制执行,过滤器之前/之后所需的任何数据按摩以及您在应用程序中需要的任何其他自定义业务逻辑.模型用于存储您的中央业务数据逻辑,因此任何不是表示或输入/输出相关但基本上模拟应用程序的核心逻辑.仅仅因为基础知识设置简单并不意味着它们没有更多.