Magento 2 Менеджер об'єктів – це клас PHP, відповідальний за створення та отримання об'єктів у Magento 2. Він також керує створенням фабрик та проксі.
Як це працює?
Щоб отримати екземпляр менеджера об'єктів (наприклад, отримати менеджер об'єктів magento 2 у phtml), використовуйте код:
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
Щоб додати менеджер об'єктів до конструктора:
/
* @var \Magento\Framework\ObjectManagerInterface
*/
private $objectManager;
/
* @param \Magento\Framework\ObjectManagerInterface $objectmanager
*/
public function __construct(
\Magento\Framework\ObjectManagerInterface $objectmanager
) {
$this->objectManager = $objectmanager;
}
За допомогою ObjectManager ви можете отримати одиночний об'єкт (метод "get") класу PHP або створити новий (метод "create").
Приклад:
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
/* Create a new product object */
$product = $objectManager->create(\Magento\Catalog\Model\Product::class);
/* Get a request object singleton */
$request = $objectManager->get(\Magento\Framework\App\RequestInterface::class);
Налаштування менеджера об'єктів
Менеджер об'єктів налаштовується у файлі di.xml, який вказує йому, як обробляти впровадження залежностей. Оскільки інтерфейс оголошено в конструкторі класу, файл di.xml також визначає бажаний клас реалізації, який менеджер об'єктів згенерував для інтерфейсу.
Нарешті, файл di.xml визначає, чи менеджер об'єктів буде розглядати об'єкт як одиночний об'єкт, чи створюватиме об'єкти для кожного запиту.
Винятки
Увага!!! Вам слід уникати прямого використання ObjectManager у вашому коді, як у наведеному вище прикладі, оскільки це приховує реальні залежності класу.
Ви можете використовувати Менеджер об'єктів лише:
- для тестів вашого коду
- у factories, proxy класах
- для змін зворотної сумісності в конструкторі класів PHP
- у статичних магічних методах, наприклад: __wakeup, serialize тощо.
Менеджер об'єктів у дії
Тут ви можете знайти кілька прикладів використання $objectManager для різних завдань розробки Magento:
✔ Magento 2 Отримати поточний ідентифікатор магазину, код, назву, ідентифікатор веб-сайту, URL-адресу
✔ Як створити простий продукт програмно в Magento 2?
✔ Отримання URL-адрес у Magento 2
✔ Програмне призначення атрибута всім наборам атрибутів у Magento 2