Почему я должен принимать MVC? [Дубликат]

    

У этого вопроса уже есть ответ:

    

Я решил намочить руки и получить структуру YII для PHP. Я создал свое первое приложение, затем создал новый контроллер, модель и представление. Подключен к базе данных, получил мою запись, переданную от контроллера, в представление и напечатал hello world.

Теперь я запутался. Если я должен сделать то же самое для каждой страницы, мне это кажется кошмаром. В каждом контроллере я должен выполнять множество операций - объявлять переменные и передавать их в представления. Мне также нужно создавать модели для каждой страницы, и это все сбивает меня с толку. В моей идее главная цель развития - избежать дублирования, но я вижу здесь много и много дублированного кода.

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

4 голоса | спросил Andrew 26 J0000006Europe/Moscow 2013, 11:47:36

3 ответа


4

Первое, что нужно учитывать, это метод разработки, чтение на основе теста, поведение и т. д. Это сильно отличается.

Второе соображение - это выбор системы развития. MVC вы начали с работ для многих систем, но не для всех. Если вам нужно сделать чат-бокс, например, есть гораздо лучшие технологии (думаю, NodeJS и т. Д.), Которые облегчают жизнь.

MVC в целом подходит для работы CRUD и может быть расширен многими способами, но это основной подход. Внутри MVC есть много вариантов сделать больше. Например: рассмотрите страницу с большим количеством виджетов. Как бы вы загрузили каждый виджет. Это отдельный вызов сервера, это внутренний запрос, это запись базы данных и т. Д. Подумайте перед началом проекта.

MVC: Ваша мысль неверна:

  

Мне также нужно создавать модели для каждой страницы, и это все сбивает меня с толку.

Читайте немного больше о MVC и о некоторых базовых подходах к разработке. Например, ощущение, что вы должны выполнять много дублирующихся работ, неверно. In может дать вам пример того, как мы быстро настраиваем концептуальное приложение. Это не работает для всех приложений, но для базового CRUD он работает хорошо.

База данных

Сначала мы создаем таблицы базы данных, поэтому мы правильно структурируем данные с требуемыми отношениями.

Запустить эшафот

Мы используем CakePHP, но я ожидаю, что это также возможно с YII: мы устанавливаем переменную, которая дает нам базовый интерфейс, чтобы мы могли тестировать и вводить некоторые данные:

http://book.cakephp.org/2.0/ru/controllers/scaffolding.html

Итак, вы получаете полный (стандартный) интерфейс, с которым вы можете работать. Он не настраивается, но дает хорошее представление о данных проекта.

Создать модели, контроллеры, представления

При выполнении мы создаем код для моделей, контроллеров, представлений (да: мы не пишем все это вручную).

http: //book. cakephp.org/2.0/en/console-and-shells/code-generation-with-bake.html

Это даст тот же внешний вид приложения, что и scaffold , но , он сгенерировал все необходимые файлы.

Запустить разработку

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

Примеры задач:

  • Удалить или добавить контроллеры (контроллеры не привязаны к моделям 1-на-1).
  • Внедрить CSS или таблицу стилей, чтобы получить представление о приложении.
  • Выпекайте плагин для структурирования кода отдельно (выньте самые сложные части)
  • Реализовать методы модели для получения правильных данных и вызывать их из представлений
  • Добавить пользовательские отношения между моделями
  • Внедрить проверку подлинности (не начинать с этого в большинстве случаев).
  • и др.

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

Затем сделайте их хорошими рабочими и красивыми. Перестройте стандартный код, который вы получили.

В целом, он лучше всего работает с отдельными контроллерами, моделями, представлениями и т. д. Вы правы, что в нем есть дублирование, но это не дублирование. Действие вида может выглядеть одинаково, но это не так. Он отправляет другие данные, запрашивает конкретный дополнительный метод модели и т. Д.

ответил Luc Franken 26 J0000006Europe/Moscow 2013, 12:14:29
2
  

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

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

Проверены шаблоны для решения конкретных проблем в конкретных контекстах , так как вы уже заметили, MVC не является шаблоном для создания небольших сайтов /проектов разработки, но для достижения потери связи между вашей моделью, просмотра и контроллер, что они относительно легко заменяются. Если вы не планируете менять какие-либо из них в будущем, MVC, вероятно, не лучший выбор.

Итак, вы можете заметить, что применение шаблонов зависит от:

  • проблема
  • контекст
  • требования к качеству
  • Преобладают ли преимущества в недостатках?

В случае MVC у вас есть следующие преимущества:

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

и недостатки:

  • усилие для реализации увеличивается
  • с изменением модели все взгляды на нее должны быть согласованы.
  • большое усилие для настройки базовой структуры (интерфейсов, событий) для удовлетворения конкретных требований
ответил McMannus 26 J0000006Europe/Moscow 2013, 12:25:26
0

Почему вы не будете использовать простую структуру, такую ​​как Laravel, это потрясающе доверять мне И это современная структура и не сложная, как Yii

ответил ax na 26 J0000006Europe/Moscow 2013, 13:18:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132