Моделі в 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'), який дозволяє опустити створення екземпляра класу моделі.

 

 

This post was last modified on 27/05/2018 17:20

Останні пости

Конфуцій

Коли вам здасться, що мета недосяжна, не змінюйте ціль — змінюйте свій план дій Конфуцій…

12/05/2024

Чарльз Дарвін

Виживає не найсильніший і не найрозумніший, а той, хто найкраще пристосовується до змін Чарльз Роберт…

11/05/2024

Що таке тег canvas в HTML5 і для чого він потрібен?

Елемент <canvas> з’явився лише в HTML5 і використовується для динамічного малювання графіки на веб-сторінці з…

10/05/2024

Ден Браун

Можливо все, — неможливе просто потребує більше часу Ден Браун  

09/05/2024

Що включає в себе чистка ноутбука?

Ноутбук — це не тільки зручний і функціональний ґаджет, а й доволі делікатний пристрій, що…

08/05/2024

Аль Пачино

Ніколи нічого нікому не пояснюйте. Все одно кожен зрозуміє так, як йому вигідно Аль Пачино…

07/05/2024