MAGENTO 2RELEASE EVENT CHERNIVTSI
Как переписать модуль с Magento 1 на Magento 2?
19 декабря 2015
Радченко АлександрSoftware Engineer at Eltrino
facebook.com/mulder.ua
vk.com/mulder_ua
Модули
Конфигурационные файлы
Что нового?
● Разбиты на более мелкие файлы● Добавлена 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
Вопросы и ответы