Модели в 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

30/09/2020

Как выучить немецкий язык легко и весело? С помощью Beste Freunde!

Немецкий часто считается сложным языком. Да, немецкая лексика имеет «тяжелый» характер. Да, есть действительно очень… Read More

27/09/2020

Отопление и горячая вода – когда нужно, а не когда соизволят включить

Тепло в доме и горячая вода в любое время для многих жителей многоквартирных и частных… 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