Насколько тонким должен быть контроллер? Я понимаю, что вся бизнес-логика помещается в модели, но как насчет других вещей?
Например, предположим, что я писал сайт блога, где каждый пользователь может иметь несколько сообщений. В настоящее время пользователь может создавать сообщения, посещая контроллер сообщений и выполняя действие create. Вот небольшой пример того, что произойдет в настоящее время.
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.
Спасибо
controller is the logic
, теперь я убежден, что это не выход, модель имеет какую-то логику, а контроллер имеет логику другого типа. Я помещаю логику туда, где она мне удобнее, не заботясь о том, будет ли толстая модель или контроллер. Если ситуация требует толстой модели, меня устраивает. Мне очень нравится одежда zombor. - person Melsi   schedule 05.11.2011