控制器应该如何瘦?我理解把所有的业务逻辑放在模型中,但其他事情呢。控制器应该如何瘦,模型应该多胖?
例如,假设我正在编写一个博客网站,每个用户可以有多个帖子。目前,用户将通过访问帖子控制器并运行创建操作来创建帖子。以下是目前会发生的一些小例子。
class Controller_Post extends Controller {
function action_create() {
if (! empty($_POST)) {
$post = new Model_Post;
$post->user_id = $this->logged_in_user->id;
$post->values($_POST);
if (! $post->create()) {
echo 'Error';
}
else
{
echo 'Saved';
}
}
}
}
我的问题是,什么会阻止我把上述逻辑放在用户模型中,像这样。
class Model_User extends Model {
function create_post($post) {
$post = Model::factory('post')->values($post);
$post->user_id = $this->id;
if (! $post->create()) {
return FALSE;
}
else
{
return TRUE;
}
}
}
如果这样做,控制器会比我放的更小。这对我来说更合理,因为用户是创建帖子的用户,所以我认为它应该在用户模型中而不是控制器中。
如果有帮助,我使用Kohana框架。
谢谢
我想你错了。我所知道的大多数模特都很瘦,而我们的会计部门却充斥着胖控制器:P – jevakallio 2011-02-28 21:59:22
哈哈,有趣且真实。但是,严肃地说,我很好奇控制器应该是多么瘦。 – BDuelz 2011-02-28 23:46:47
我发现我自己在某些时候只是为了'控制器是逻辑'而设置了胖控制器,现在我确信这不是要走的路,模型具有某种逻辑并且控制器具有其他逻辑类。我把逻辑放在了对我来说更有意义的地方,而不必关心模型或控制器是否会变胖。如果情况需要一个胖胖的模型,对我来说没问题。我喜欢zombor a lott的回答。 – Melsi 2011-11-04 23:40:00