Запутался по шаблону MVC и использованию классов - PullRequest
1 голос
/ 09 августа 2011

Я уже некоторое время использую паттерн MVC через Code Igniter.Поскольку я не очень разбираюсь в концепциях ООП, это стало большой процедурной работой, но теперь я хочу расширить свои навыки разработки шаблонов, но это меня смущает.

Я не совсем уверен, как использовать MVCс тем, что я чувствую, более «общие классы»Скажем, если бы я хотел создать класс, который обрабатывал бы проверку ввода, я бы тогда сделал это библиотекой?Если бы я затем хотел расширить эту библиотеку, я бы просто создал новый класс и сохранил его в папке библиотеки вместе с его родителем?Могу ли я создать структуру папок внутри папки библиотеки?

Я хочу отойти от мышления, что контроллер - это то, что мне нужно, когда я делаю что-то новое.Может быть, об этом можно подумать;Если я сделаю поиск, и в поиске будет несколько «типов / вкладок», скажем, поиск по пользователям, страницам, блогам и т. Д., Я бы затем создал эти разные библиотеки, которые, возможно, расширяют некоторую супербиблиотеку, а затем просто сделал бы контроллер поиска таким, чтобырешить, какой из классов использовать для каждой задачи?Так что, если пользователь перейдет на вкладку «Поиск в блогах», класс поисковых блогов будет загружен вместо того, чтобы просто иметь большую кучу процедурных вещей?

Кроме того, если это будет хорошей идеей сделать это таким образомтогда зачем мне модели?Я чувствую, что модели в каком-то смысле похожи на классы.Но зачем использовать пользовательские классы / библиотеки, если я могу вместо этого просто использовать модели?

Проблема под рукой: мне надоело редактировать основные функции.Я боюсь разбить приложение, и оно становится очень утомительным.

Спасибо

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Поскольку я недавно изучал MVC и ООП, это может помочь (в контексте того, что вы просили):

1. Архитектура MVC против трехуровневой архитектуры

Шаблон Model-View-Controller (MVC) разделяет приложение на три основных компонента: модель, представление и контроллер.

Модель : В большинстве вводных статей MVC модель упоминается просто как часть данных или часть базы данных приложения. Это не точно. Модель - это часть вашего приложения, которая работает с вашими данными, а также содержит все другие логические или бизнес-правила приложения, которые не являются частью Controller или View. Таким образом, большая часть кода приложения будет в классах Model.

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

Контроллер : Контроллер обрабатывает все пользовательские запросы (из представления) и отвечает на пользовательский ввод. Он передает пользовательские входные данные в модель, которая может обрабатывать их, и как только выходные данные готовы, контроллер выберет соответствующий вид для отображения выходных данных. При необходимости представление может связываться с моделью для получения выходных данных и их анализа для конечного пользователя.

И Вид, и Контроллер обмениваются данными с Моделью, но независимы друг от друга и поэтому могут быть легко изменены (это концептуальное «разделение» в MVC).

Шаблон MVC часто путают с трехуровневой архитектурой.

Из википедии: «Трехуровневая архитектура клиент-сервер, в которой пользовательский интерфейс, функциональная логика процесса (« бизнес-правила »), компьютерное хранилище данных и доступ к данным разрабатываются и поддерживаются как независимые модули, большинство часто на отдельных платформах ... На первый взгляд, три уровня могут показаться похожими на концепцию модель-представление-контроллер (MVC), однако топологически они различны. Основным правилом в трехуровневой архитектуре является клиент уровень никогда не связывается напрямую с уровнем данных , в трехуровневой модели вся связь должна проходить через средний уровень. Концептуально трехуровневая архитектура является линейной. Однако архитектура MVC является треугольной: представление отправляет обновляет контроллер, контроллер обновляет модель, а представление обновляется непосредственно из модели . "

[Источник: Многоуровневая архитектура ]

2. Классы и библиотека: Единицы кода

Это помогает думать о кодах в единицах при решении, как их организовать. Для небольших приложений класс - это достаточно хорошая «маленькая» единица. Когда приложения больше, библиотека может быть более подходящей. Проще говоря, библиотека - это просто набор классов, сгруппированных по их функциональности (или по прихоти и фантазии разработчиков :).

Например, у вас может быть группа классов, которые обрабатывают разные входные проверки, и вы можете объединить все это в один файл и назвать его «Библиотека проверки входных данных».

Классы и библиотеки облегчают повторное использование кода и делают кодирование более модульным, что облегчает управление.


При планировании приложения определите, какие классы будут в Model, View и Controller. Если ваше приложение имеет большой размер, вы также можете при необходимости организовать классы в библиотеки внутри каждого компонента.

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

0 голосов
/ 09 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...