В течение некоторого времени я боролся с тем, как именно перекодировать PHP-приложение на основе страницы, используя инфраструктуру MVC. Просто для справки, мне нужно перенести приложение в MVC, потому что мой босс делает меня. Во всяком случае, я сел и распечатал структуру каталогов. Затем я начал пытаться спланировать, как я могу преобразовать эти страницы в пары контроллер / действие. Некоторые вещи кажутся очень простыми. Например, у меня было несколько страниц, посвященных добавлению / редактированию / удалению пользователя. Это очень легко создать «пользовательский» контроллер и добавлять методы или действия для добавления / редактирования / удаления. У меня возникают проблемы, когда я решаю, когда на самом деле создать контроллер, а не делать что-то просто как действие, поскольку это не всегда так ясно. Например, контроллер входа в систему против пользователя / входа в систему или контроллер регистра в зависимости от пользователя / регистрации. Для меня, если объект может что-то сделать, имеет смысл быть действием, но это не всегда так ясно.
Другим примером может быть то, что у меня есть около 12 страниц форм, которые используются для создания «плана». В моей голове я бы подумал, что мне нужно создать «плановый» контроллер, и тогда каждый из старых страниц станет действием. Таким образом, у меня был бы один контроллер с 12 действиями (методами). Проблема для меня заключается в том, что хотя все эти 12 страниц являются формами ввода данных, которые в конечном итоге составляют этот «план», это все, что у них общего. Каждая из страниц использует разные таблицы в базе данных и не имеет ничего общего друг с другом. По сути, создав контроллер «плана», я просто использую его как механизм группировки; не обязательно использовать его, потому что они что-то связаны друг с другом. По крайней мере, в приведенном выше примере с «пользовательским» контроллером; каждое из этих действий использует одну и ту же «пользовательскую» таблицу, поэтому имеет смысл сгруппировать эти действия в один контроллер. Должен ли я сделать каждую из этих форм ввода данных собственным контроллером?
Полагаю, все сводится к тому, чтобы позволить себе использовать контроллеры в качестве объекта иерархической структуры вместо объектов / действий. Просто кажется, что легко попасть в эту ловушку, используя контроллеры неправильным образом. Кто-нибудь понимает, что я говорю? Надеюсь, это не слишком запутанно.
РЕДАКТИРОВАТЬ : Если я попытаюсь придерживаться одного контроллера для просмотра; Затем я буду сводить код для каждого запроса к минимуму. Это лучший способ?
РЕДАКТИРОВАТЬ : Судя по тому, что говорят все, кажется, что один контроллер на представление не в моих интересах. У меня все еще есть некоторые проблемы, потому что кажется, что контроллер может стать толстым в спешке, но это для другого обсуждения. У меня также есть некоторые вопросы, когда принимать решение использовать контроллер вместо действия. Хорошим примером будет стек overflow . В верхней части страницы у вас есть выбор «Вопросы», который, как мы можем предположить, приведет вас к контроллеру «Вопросы». Я говорю это потому, что с правой стороны вы можете выбрать «Задать вопрос», который URL указывает на «вопросы / задать». Это имеет смысл, если вы используете метод ask контроллера вопросов. Что меня смущает, так это то, что у вас есть опция «Без ответа» в меню. Похоже, это имеет контроллер для себя. Почему это не просто действие под контроллером вопросов, как в «вопросах / без ответа»? Вот где все становится мутным для меня.