Как переписать модуль с Magento 1 на Magento 2

Post on 15-Apr-2017

478 views 2 download

Transcript of Как переписать модуль с Magento 1 на Magento 2

MAGENTO 2RELEASE EVENT CHERNIVTSI

Как переписать модуль с Magento 1 на Magento 2?

19 декабря 2015

Радченко АлександрSoftware Engineer at Eltrino

facebook.com/mulder.ua

vk.com/mulder_ua

olexandr.radchenko@eltrino.com

Модули

Конфигурационные файлы

Что нового?

● Разбиты на более мелкие файлы● Добавлена XSD валидация

Конфигурационные файлы

Как добавить новый модуль

Как добавить новый модуль

Setup● Все файлы находятся в директории Setup● Все установочные файлы стали классами,

которые имплементируют один из интерфейсов:

– InstallSchemaInterface– InstallDataInterface– UpgradeDataInterface– UpgradeSchemaInterface

Setup

Как добавить новый модуль

php bin/magento module:enable Eltrino_Event

php bin/magento setup:upgrade

php bin/magento module:status

Системное менюMagento 1.9

Системное меню

Magento 2

Routes

LayoutsHandle = routeName_Controller_Action

КонтроллерыControllerClass::Action => Controller/ActionClass

Контроллеры● Каждый экшен должен имплементировать

\Magento\Framework\App\ActionInterface● Каждый экшен имеет функцию execute()

которая возвращает \Magento\Framework\Controller\ResultInterface|ResponseInterface(Redirect, Layout, Json, Forward и др. )

Контроллеры

Класс Mage::

Magento 1.9 Magento 2Mage::getModel FactoryMage::helperMage::getSingletonMage::getResourceModel

Singleton

Dependency InjectionDependency (зависимость) - это объект, который может быть использован в классе. Injection (внедрение) процесса передачи зависимости.

Dependency Injection - это дизайн паттерн, который реализует принцип "инверсии управления" для управления зависимостями. То есть, появляется механизм который создает, контролирует и передает объекты в клиентский класс. В Magento 2 ответственность за это берет на себя ObjectManager .

Object ManagerObjectManager - это часть инфраструктуры фреймворка; данный механизм сработает автоматически при создании объектов и не требует вмешательства. В большинстве случаев нас устраивает такое поведение.

ВАЖНО! НЕ ИСПОЛЬЗУЙТЕ OBJECT MANAGER ДЛЯ ТРИВИАЛЬНОГО СОЗДАНИЯ ОБЪЕКТОВ.

Задачи которые выполняются при помощи Di и ObjectManager

● Создание объектов● Rewrites● Interception (Плагины)● Конфигурация входящих аргументов класса

Получение объекта

Получение объекта

Получение объекта

Кодогенератор

ProxyProxy в Magento 2 используется для громоздких объектов с большим количеством зависимостей. Magento создает обертку над классом, реализуя “Lazy Load”.

Создать Proxy просто, достаточно дописать окончание ClassNameProxy как и в случае с фабрикой.

Magento plug-ins

Magento plug-ins

Вопросы и ответы