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

 

 

Recent Posts

Гра Ліла — це найдавніша із відомих трансформаційних ігор для самопізнання

Якщо представити життя у формі Гри, тоді кожному із нас у ній відведено свою роль.…

4 години ago

Як змінити активну тему WordPress через базу даних

Тема (шаблон) — це своєрідний кістяк сайту на WordPress. І, на жаль, іноді цей «кістяк»…

1 день ago

5 практичних порад щодо розробки форм під мобільні пристрої

Контактна форма (чи будь-яка інша) на сайті — це дуже важливий компонент. На неї покладено…

2 дні ago

Ліна Костенко

Жах не в тому, що щось зміниться. Жах у тому, що все може залишитися так…

1 тиждень ago

Трансформаційна гра родом з древньої Індії — Ліла

Що таке Ліла — це стародавня гра, що виступає в якості інструменту для особистісної трансформації,…

1 тиждень ago

Конструктор — найкращий варіант інтерактивної іграшки для дітей

Сучасні варіанти дитячих конструкторів — це не просто іграшки, а дієвий інструмент розвитку, який допомагає…

1 тиждень ago