PHP – MVC – выбор вида

Приветствую всех!

Поиск некоторой помощи с MVC в контексте PHP. В настоящее время я создаю небольшую легковесную структуру MVC для ускорения разработки приложений на работе. Это длинное жесткое разделение, исключающее встроенный код – по крайней мере, с многочисленными проектами, нависшими над головой и соблазном использовать его постоянно.

Я понимаю большинство основных требований MVC, и я уже начал переносить некоторые из моих существующих классов, которые находятся в шаблоне Singleton, как утилиты в моей новой структуре (это в основном базовые «обработчики» для выполнения сервисов сайта – класс для загрузка файлов, авторизация, завершенные запросы базы данных PDO, печать ошибок и т. д.)

То, что я не могу понять, двигаясь вперед после прочтения большого количества документации, – лучший подход к созданию экземпляров. В моем старом, неэффективном дизайне я бы отключил переменную $ _GET для переключения вывода из внутреннего вида. Просто уходя от интуиции, это кажется очень плохим способом выполнить работу.

Я просматриваю CodeIgniter, и кажется, что есть предопределенные функции для загрузки представлений в рамках этой структуры. Каков наилучший подход к такому дизайну приложения? Будет ли это «фабрика ссылок» на основе классов, которая использует одни и те же переменные для извлечения контента, выбора правильного файла представления и размещения его в потоке страниц? Кроме того, как можно включить новое представление между верхним и нижним колонтитулами в индекс корня без использования переключателей? Это единственное, что меня сбивает с толку – я очень надеюсь, что я достаточно четко сформулировал себя.

Спасибо всем, как всегда!

Я очень рекомендую «PHP-объекты, шаблоны и практику» Мэтта Зандстра. Хорошая часть книги посвящена созданию MVC-фреймворков и будет очень-очень полезна для вас.

Он охватывает эти шаблоны (которые вы также можете исследовать в другом месте):

  • Передний контроллер
  • Контроллер приложений
  • Контроллер страницы
  • Просмотр шаблона
  • Просмотреть помощника

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

  1. Какой-то маршрутизатор анализирует запрос и переводит на объект контроллера с действием (или принимает значение по умолчанию) и необязательными параметрами. Затем маршрутизатор вызывает функцию объекта контроллера , соответствующую действию.
  2. Объект контроллера (обычно расширенный от общего объекта контроллера) обрабатывает запрос и определяет, какие данные передаются в представление, а также какое представление использовать. Большинство фреймворков настраивают представление по умолчанию, основанное на действии, но в конечном итоге именно контроллер должен решить, какой вид использовать.
  3. Представление берет данные и отображает их.

Это мой очень упрощенный подход к процессу.