控制器應該如何瘦?我理解把所有的業務邏輯放在模型中,但其他事情呢。控制器應該如何瘦,模型應該多胖?
例如,假設我正在編寫一個博客網站,每個用戶可以有多個帖子。目前,用戶將通過訪問帖子控制器並運行創建操作來創建帖子。以下是目前會發生的一些小例子。
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