Squeak.ru - шаблоны программирования

Как реализовать MVC с Datamapper в PHP

Ранее я задавал этот вопрос: should-i-create- объект-или-работа-с-массивом

Сейчас я пытаюсь мыслить за рамками той концепции, с которой работал. Пожалуйста, поделитесь со мной своими мыслями. Я хочу ПОЛУЧИТЬ это.

Если бы я установил MVC в сочетании с картографом данных, было бы это логично, например, для форума:

Все важные вещи суть сущности. Сообщение, Тема, Пользователь, Форум. В основном я вижу контроллер как страницу. Он может выбрать отображение разных шаблонов (например, списка или формы), но это более или менее страница.

Через маршрутизатор я бы загрузил необходимый контроллер, чтобы получить данные и отобразить их в моем шаблоне.

Теперь, как это будет работать для отображения всех сообщений в ветке:

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

Это правильная идея?

Куда же девалась «модель» из MVC? Или мне не хватает шагов?

Я не хочу использовать сторонние инструменты, я хочу построить его с нуля, чтобы понимать все, что происходит.

Как мне начать правильно?


  • это может немного помочь. 01.06.2013

Ответы:


1

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

Хотя мы уклоняемся от рекомендаций фреймворка по переполнению стека, я понимаю из комментариев здесь, что Symfony2 считается одной из лучших реализаций этого шаблона проектирования, в частности, из-за использования инъекции зависимостей. Прочтите здесь также некоторые вопросы с тегом «mvc» - есть много чего, что можно подобрать. Как бы то ни было, я бы не стал слишком зацикливаться на шаблонах проектирования (то есть на том, реализует ли фреймворк X шаблон Y) - пока ваши приложения являются модульными и легко тестируемыми, это большая победа.

01.06.2013
  • спасибо за вашу рекомендацию. На самом деле я начал с CodeIgniter, и после того, как меня раздражала необходимость соответствовать их коду, я решил, что хочу написать свой собственный фреймворк. Я также работал с парой систем интернет-магазинов, таких как OpenCart, у которых есть хорошая рабочая модель MVC. Я читаю код системы и пытаюсь понять, что они делают и почему. И я прошел несколько курсов на Lynda.com, которые также указали мне в других направлениях. 01.06.2013
  • Например, репетитор с энтузиазмом относился к использованию статики, в то время как другой не был ее поклонником, но с энтузиазмом продвигал Синглтон. А потом все эти разные мнения. На самом деле я думаю, что вы совершенно правы: мне нужно просто сделать работающее приложение, а не зацикливаться. 01.06.2013
  • Стоит знать, что в последнее время есть обратная реакция на шаблон Singleton - лично я стараюсь избегать этого, потому что он жестко препятствует расширяемости класса. Однако оказывается, что есть много других причин! 01.06.2013
  • Контроллер не должен содержать логику приложения. Посмотрите, как определяется узор. Только задача контроллеров связана с изменением состояния слоя модели и видов. 01.06.2013
  • @halfer Да, я много читал о плюсах и минусах Синглтона после того, как кто-то назвал его злом. Я собираюсь перекодировать эту часть. А также статику, которую я использовал, имея в виду курс. По сути ... с тех пор, как я начал по-настоящему вникать в код, я прыгал от одного лагеря к другому ... трудно понять настоящие ошибки и правды во всех мнениях. Я так сильно хочу понять это ПРАВИЛЬНО. 01.06.2013
  • @ tereško Спасибо за ваше замечание. У вас есть хорошая ссылка, где MVC объясняется так, как вы его видите? Хотел бы это прочитать. 01.06.2013
  • @LvS - сделать все правильно - это нормально, но доведение до совершенства часто не выдерживает анализа затрат / выгод (и «аналитический паралич» может быть результатом чрезмерного проектирования). Я думаю, что наш новый собеседник имеет в виду, что нужно иметь уровень обслуживания, хотя большинство фреймворков PHP переносят его в контроллер. По моему опыту, если это ваша единственная проблема, вы все равно можете иметь модульное гибкое тестируемое приложение. 01.06.2013
  • @LvS, большинство материалов, которые я использую, исходят от Фаулера. Вы можете найти важные здесь (последний раздел). Остальное больше похоже на то, как применять концепции oop и mvc к php. 02.06.2013
  • @halfer Предложение использовать фреймворк на самом деле не отвечает на вопрос. Может быть, справка была бы хорошей? Однако я не могу поспорить с вашей точкой зрения. 16.11.2013
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...