MSI - Reservation Challenges with 3rd-party Systems
История одной трансформации: как Magento 1 разработчику быстро переориентироваться на Magento 2. Анастасия Сухорукова
1. История одной трансформации: как Magento 1
разработчику быстро переориентироваться на Magento 2
Спикер: Анастасия Сухорукова
2. Кто я?
2
В профессиональном плане:
Инженер-программист
Магистр прикладной математики
PHP программист с 2008 года
Мадженто Лид Девелопер в Magecom
По жизни:
Жена
Мама замечательной девочки
4. PHP 4
Использование классов.
• По правде говоря, PHP не является в полной мере объектно-
ориентированным языком, поэтому очень часто можно обойтись и
без использования классов, но иногда они сильно облегчают
жизнь.
• Но не стоит и злоупотреблять ими, так как неоправданно большое
количество используемых классов не только затрудняет
понимание кода программы, но нередко приводит к снижению ее
производительности.
• Автор учебника: Артем Акатов
• Опубликовано: 15.02.2004
4
5. PHP 5
ООП:
• Клонирование
• Модификаторы доступа private, protected, public
• Интерфейсы
• Абстрактные классы и методы
• Магические методы
• Final
• __autoload()
5
18. System Module Config file
tabs - General
sections
groups
fields
Mage::getStoreConfig(‘{section}/{group}/{field}’);
Вся информация хранится в таблице core_config_data
18
19. Menu Config file
config
menu
menu_item_name (ex.: Catalog)
title
sort_order
children
child_menu_item_name (ex. Manage products)
title
action (ex. adminhtml/catalog_product)
sort_order
19
27. Composer
27
• Позволяет использовать сторонние библиотеки, не
присоединяя их к коду
• Компонентная архитектура с хорошо
организованным управлением зависимостями
• Управление зависимостями для избежания
конфликтов между модулями и проблем с
совместимостью
• Версионирование зависимостей
• Семантическое версионирование
• Supports the PHP Framework Interoperability standard
https://getcomposer.org/doc/01-basic-usage.md
28. S. O. L. I. D.
• Single Responsibility
• Open/Closed Principle
• Liskov Barbara Principle
• Interface Segregation
• Dependency Invertion
28
29. • <Magento install directory>/app: Рекомендованная
директория для разработки
• Для модулей используем app/code.
• Для темы app/design/frontend.
• Для темы административной части app/design/adminhtml.
• Для переводов app/i18n.
• Библиотеки и код Мадженто находится тут <Magento
install directory>/vendor
29
Структура папок
30. • Block: содержит PHP классы, view часть MVC.
• Controller: содержит PHP классы, controller часть MVC.
• etc: содержит конфигурационные файлы, как минимум
module.xml
• Model: содержит PHP классы, model часть MVC.
• Setup: содержит классы для создания структуры БД и
наполнения их данными во время установки или
обновления модуля
30
Структура модуля
31. • Api: содержит PHP классы, используемые API.
• i18n: содержит файлы локализации
• Plugin: содержит файлы плагинов
• view: содержит фронтенд файлы, включающие статические
файлы разметки, шаблоны дизайна, email шаблоны и layout
файлы.
31
Структура модуля
38. Observers
namespace MyCompanyMyModule;
use MagentoFrameworkEventObserverInterface;
class MyClass{
private $eventManager;
public function __construct(MagentoFrameworkEventManage $eventManager){
$this->eventManager = $eventManager;
}
public function something(){
$eventData = null;
// Code...
$this->eventManager->dispatch('my_module_event_before');
// More code that sets $eventData...
$this->eventManager->dispatch('my_module_event_after',['myEventData'=>$eventData]);
}
}
38
39. Observers
namespace MyCompanyMyModuleObserver;
use MagentoFrameworkEventObserverInterface;
class MyObserver implements ObserverInterface
{
public function __construct()
{
//Observer initialization code...
//You can use dependency injection to get any class this observer may need.
}
public function execute(MagentoFrameworkEventObserver $observer)
{
//Observer execution code...
}
} 39
41. Plugins
Не могут использоваться с:
● Объектами, инициализированными до MagentoFrameworkInterception
●Final методами
●Final классами
●Классами, которые содержат хотя бы один final метод
●Непубличными методами
●Статическими методами
●Конструкторами
●Виртуальными типами (см. di)
41