Add new comment

MVC в OpenCart

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

Что такое MVC?

 
MVC - это шаблон проектирования, согласно которому вся логика приложения разбивается на 3 группы:
  1. Модель model. Здесь происходит работа с базой данных (получение данных, запись, удаление, обновление), а также всевозможные сложные расчеты всего.
  2. Представление view. Здесь происходит отображение данных пользователю, это шаблон, который получает данные из контроллера и выводит их.
  3. Контроллер 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 папке и чтобы удалить модуль достаточно просто удалить эту папку. 
CAPTCHA
Spam protection
Target Image