Моделі в Magento – короткий огляд

Робота з даними в Magento заснована на трьох принципах: Моделі, Ресурси моделі і Колекції. Модель – це буква «M» в абревіатурі MVC (Model-View-Controller, Модель-Вигляд-Контролер). Моделі відповідають за бізнес-логіку будь-якого PHP додатку, і це не є винятком для Magento. Оскільки Magento використовує архітектурний шаблон MVC, Моделі в двигуні використовуються для інкапсуляції бізнес-логіки (тобто, сукупності правил, принципів і залежностей поведінки об’єктів). Головним завданням для Моделі в Мадженто є обробка даних з бази даних, оскільки вона керує всіма логічними операціями з базою даних.

Всі Моделі розміщуються в папці «Model» модуля. Щоб використовувати моделі в Magento, вам потрібно вказати їх в конфігураційному файлі вашого модуля (config.xml).

Всі моделі Magento успадковуються від Mage_Core_Model_Abstract. Magento розділяє Модель на дві частини: безпосередньо моделі, які обробляють бізнес-логіку, і на Ресурси моделі, які покликані спілкуватися з базою даних. Ресурс моделі також має два різних типи: Entity і Mysql4.

Моделі працюють з Ресурсами моделі для отримання своїх даних. Ресурси моделі виконують операції з базою даних і потім передають дані самій Моделі. Це робиться на абстракціях більш високого рівня, тому нам не потрібно робити це самим. Однак ми повинні повідомляти Magento, який Ресурс моделі працює з нашої Моделлю.

Magento використовує шаблон Singleton в формі зберігання даних в глобальному реєстрі. Тут виникає різниця між методами Mage::getModel() і Mage::getSingleton(). Останній метод перевіряє, чи був створений екземпляр запитаного класу, і якщо це так – повертає об’єкт з реєстру. В іншому випадку створюється екземпляр класу і зберігається в реєстрі.

Ресурс моделі Magento

Ресурс моделі з’єднується з базою даних і виконує операції CRUD. Він керує різними з’єднаннями для читання/запису.

Всі Ресурси моделі розширюють клас Mage_Core_Model_Resource_Db_Abstract.

У файлі конфігурації модуля в ноді <resourceModel> вказується інформація про Ресурс моделі. Вона каже Magento, де знайти префікс класу при використанні фабричного методу Mage::getResourceModel().

Для вилучення Ресурсів моделі також можна використовувати зручні методи, наприклад, Mage::getResourceModel() і Mage::getResourceSingleton(). І якщо у вас є об’єкт моделі, його супутній Ресурс моделі можна отримати за допомогою методу Mage::getModel()->getResource().

Колекції Моделі в Magento:

Коли нам потрібні результати, засновані на різних моделях, тоді нам потрібно створити Колекцію або ж використовувати існуючу Колекцію. Це дає нам масу зручних методів, спрощуючи маніпулювання сутностями і зменшуючи необхідність писати складні sql запити. Якщо модель співвідноситься з рядком таблиці в якості об’єкта, то Колекція співвідноситься з набором таких рядків.

Якщо ви вказали у файлі конфігурації настройки для використання Ресурсів моделі, у вас вже є все необхідне для створення Колекцій. Колекції слідують угоді про іменування на основі Ресурсів моделі. Конфіг бере назву Ресурсу моделі і додає _collection в кінець цієї назви. Це означає, що ім’я класу і ім’я файлу повинні відповідати цій угоді.

Всі Колекції розширюють Mage_Core_Model_Resource_Db_Collection_Abstract.

Для отримання колекції використовується метод Mage::getModel()->getCollection(). Однак можна використовувати й інший схожий запис Mage::getResourceModel('module/model_collection'), який дозволяє опустити створення екземпляра класу моделі.

Tags: Magento

Recent Posts

Опалення і гаряча вода коли треба, а не коли включать

Тепло в домі і гаряча вода в будь-який час для багатьох мешканців багатоквартирних та приватних… Read More

19/09/2020

Інструкція по завантаженню відео з сервісу TikTok (безкоштовно та без watermark)

Якщо ви ще не чули про TikTok, тоді рекомендуємо вам спочатку ознайомитися з цим коротким… Read More

17/09/2020

Що є в бюджетному ноутбуці – на які характеристики розраховувати?

Пройшли ті часи, коли пристойний ноутбук коштував від 1000 доларів. Сьогодні можна купити досить непоганий… Read More

16/09/2020

Що краще: цифрове телебачення Т2 чи інтернет-телебачення

Сучасне життя неможливо уявити без телебачення. Воно дозволяє дізнаватися про події в Україні та світі,… Read More

02/09/2020

Гіпоалергенна подушка. Чому вона важлива?

Зараз знайдеться мало людей, в яких немає алергії на продукти або пилок рослин. Вважається, що… Read More

28/08/2020

Футбольний Інстаграм – що нового у топових футболістів

Деякі відомі футболісти ретельно приховують свої особисте життя, а інші – активно постять фотографії з… Read More

24/08/2020