MVC в OpenCart
Sorry for my English! English is not my native language. One of the reasons to create this blog is to improve my English writing. So I will be highly obliged if you will help me with this. If you find a grammar error on this page, please select it with your mouse and press Ctrl+Enter.
OpenCart широко использует шаблон проектирования MVC. Это значит, что для понимания работы OpenCart необходимо хорошо понимать что такое MVC.
Что такое MVC?
MVC - это шаблон проектирования, согласно которому вся логика приложения разбивается на 3 группы:
- Модель model. Здесь происходит работа с базой данных (получение данных, запись, удаление, обновление), а также всевозможные сложные расчеты всего.
- Представление view. Здесь происходит отображение данных пользователю, это шаблон, который получает данные из контроллера и выводит их.
- Контроллер controller. Это "центр управления", он получает данные от пользователя, на основании этих данных с помощью модели делает какие-то вычисления и передает результат представлению.
То есть, упрощенно: пользователь вводит в браузере адрес страницы с параметрами и нажимает Enter, после чего первым параметры этой страницы получает контроллер и запускает необходимую модель для получения данных из базы данных согласно этим параметрам, получив данные из базы данных, контроллер передает эти данные в определенный шаблон представления, который выводит эти данные пользователю на экран.
Где в OpenCart находятся файлы моделей, представлений и контроллеров?
В OpenCart все файлы моделей, представлений и контроллеров находятся в соответствующих папках для каталога:
model
view
controller
и для панели администрирования:
admin/model
admin/view
admin/controller
Как узнать какой контроллер отвечает за данную страницу?
Для страниц это делается очень просто - просто нужно посмотреть на URL этой страницы. Если в нем будет:
yoursite.com/index.php?route=product/product&product_id=40
то используется контроллер product/product
Мы даже видим какой метод этого контроллера используется - если третий параметр не указан, как у product/product то используется метод по умолчанию - index,
если указан третий параметр, например product/product/review то используется метод review.
Реализация MVC в OpenCart
Должен сказать, что MVC в OpenCart реализован достаточно качественно. Все четко разложено по нужным папкам. Вы не найдете (с возможно очень редкими исключениями) обращения к базе данных из контроллера, выполнение каких-то вычислений в шаблоне представления или формирование html кода в контроллере или модели.
Единственно что контроллеры достаточно большие и можно было бы перенести некоторую работу из контроллеров в модель, чтобы сделать контроллеры более простыми.
Преимущества MVC
Одним из самых больших преимуществ является то, что все лежит на своих местах. Вам не нужно долго думать в каком файле вам нужно что-то поменять и где именно, вы делаете это моментально.
Другим преимуществом является то, что код не содержит каши из html, php, javascript, обращений к базе итд. Каждый тип кода лежит в отдельном файле, такой код легко читать и понимать.
Недостатки MVC в OpenCart
Недостатком MVC в OpenCart является то, что все файлы модуля, а это десятки файлов, раскиданы по всех папках. И если вам понадобится удалить какой-то модуль, сделать это будет очень непросто, так как вам нужно во-первых знать какие файлы использует модуль (обычно все файлы лежат в папках model/module, catalog/module и template/module и называются так же как и модуль, но это далеко не всегда так, иногда модули кидают свои файлы в папку category или какую-то библиотеку в системную папку OpenCart) после чего нужно вручную удалить каждый файл. Для примера в Drupal все файлы модуля лежат в 1 папке и чтобы удалить модуль достаточно просто удалить эту папку.
Add new comment