правильно ли я подошел к формированию контроллеров? (опкакайте код)

Духовность™

Продвинутый новичок
правильно ли я подошел к формированию контроллеров? (опкакайте код)

Суть вот в чем. Контроллеры у меня получаются вот в таком виде:

Основной контроллер backend-a

backend статей
backend групп
backend пользователей

И что-то мне в этом во всем не понравилось. Сейчас пришел к выводу, что эти контроллеры не универсальны - они исключительно для админского интерфейса, их нельзя использовать на frontend части, даже если действия будут идентичны.

Зашел на mzz.ru и увидел у них очень компактные контроллеры, которые отвечают за определенное действия. В связи с этим у меня возникли непонимания.

Если раньше я представлял контроллер как общий класс для определенной сущности вида

PHP:
 class User_Controller
{
    public function edit();

    public function delete();

    public function other_action();
}
где т.н. action-ами были методы контроллера.

Теперь мне контроллер представляется конкретным классом под конкретное действие:

PHP:
 class User_Controller_Edit
{
}

class User_Controller_Delete
{
}

class User_Controller_OtherAction
{
}
Фаулер, насколько я понимаю, называет это "классами команд" описывая типовое решение FrontController.

Чем второй вариант лучше? Он придает гибкости контроллерам, их можно использовать где угодно (в моем случае контроллеры backend-a нельзя использовать в качестве контроллеров frontend-a).

Тогда становится не ясно, чем в таком случае будут являться т.н. actions?

Если раньше при запросе

/user/edit

у меня запускался контроллер User_Controller с методом edit, то если реализовать модель 1 контроллер == 1 действие, то само понятие action пропадает и запрос /user/edit/ просто напрсто вызывает класс User_Controller_Edit.

Правильно ли я придумал так делать? )
 

Splurov

Новичок
А почему не сделать abstract User_Controller, User_Controller_Frontend, User_Controller_Backend?
 

Духовность™

Продвинутый новичок
сделаю, да и вынесу в него, например, проверку на правильность идентификатора пользователя. Это понятно.

User_Controller_Frontend, User_Controller_Backend
не понял с этим.

да и вопрос в целом о другом - правильно ли делать контроллеры на 1 действие, а не писать тыщу методов в одном классе?
 

Splurov

Новичок
По-моему, не правильно.
Я имел ввиду, что общие методы определить в базовом классе, а специфические методы для бэкэнда/фронтэнда определить в дочерних классах.
 

Splurov

Новичок
Вообще, не вижу ничего плохого в том, что контроллер бэкэнда нельзя использовать на фронтенде - большинство задач различается (очевидно, что-то общее в коде будет, но выделять для этого отдельный класс врядли имеет смысл - в конечном итоге всё зависит от конкретных задач).
 

Alexandre

PHPПенсионер
лично у меня реализован первый вариант:
контроллер - экшен
так проще с кодом работать,
но это дело вкуса.
контроллеры на бэкэнд и фронт-энд не делю,
просто взываю разные методы для фронт и бэк-энда
 
Сверху