Духовность™
Продвинутый новичок
правильно ли я подошел к формированию контроллеров? (опкакайте код)
Суть вот в чем. Контроллеры у меня получаются вот в таком виде:
Основной контроллер backend-a
backend статей
backend групп
backend пользователей
И что-то мне в этом во всем не понравилось. Сейчас пришел к выводу, что эти контроллеры не универсальны - они исключительно для админского интерфейса, их нельзя использовать на frontend части, даже если действия будут идентичны.
Зашел на mzz.ru и увидел у них очень компактные контроллеры, которые отвечают за определенное действия. В связи с этим у меня возникли непонимания.
Если раньше я представлял контроллер как общий класс для определенной сущности вида
где т.н. action-ами были методы контроллера.
Теперь мне контроллер представляется конкретным классом под конкретное действие:
Фаулер, насколько я понимаю, называет это "классами команд" описывая типовое решение FrontController.
Чем второй вариант лучше? Он придает гибкости контроллерам, их можно использовать где угодно (в моем случае контроллеры backend-a нельзя использовать в качестве контроллеров frontend-a).
Тогда становится не ясно, чем в таком случае будут являться т.н. actions?
Если раньше при запросе
/user/edit
у меня запускался контроллер User_Controller с методом edit, то если реализовать модель 1 контроллер == 1 действие, то само понятие action пропадает и запрос /user/edit/ просто напрсто вызывает класс User_Controller_Edit.
Правильно ли я придумал так делать? )
Суть вот в чем. Контроллеры у меня получаются вот в таком виде:
Основной контроллер backend-a
backend статей
backend групп
backend пользователей
И что-то мне в этом во всем не понравилось. Сейчас пришел к выводу, что эти контроллеры не универсальны - они исключительно для админского интерфейса, их нельзя использовать на frontend части, даже если действия будут идентичны.
Зашел на mzz.ru и увидел у них очень компактные контроллеры, которые отвечают за определенное действия. В связи с этим у меня возникли непонимания.
Если раньше я представлял контроллер как общий класс для определенной сущности вида
PHP:
class User_Controller
{
public function edit();
public function delete();
public function other_action();
}
Теперь мне контроллер представляется конкретным классом под конкретное действие:
PHP:
class User_Controller_Edit
{
}
class User_Controller_Delete
{
}
class User_Controller_OtherAction
{
}
Чем второй вариант лучше? Он придает гибкости контроллерам, их можно использовать где угодно (в моем случае контроллеры backend-a нельзя использовать в качестве контроллеров frontend-a).
Тогда становится не ясно, чем в таком случае будут являться т.н. actions?
Если раньше при запросе
/user/edit
у меня запускался контроллер User_Controller с методом edit, то если реализовать модель 1 контроллер == 1 действие, то само понятие action пропадает и запрос /user/edit/ просто напрсто вызывает класс User_Controller_Edit.
Правильно ли я придумал так делать? )