Коли я думаю, що я закрутив голову навколо системи DI від Magento 2, щось підходить і розгортає його.
Я бачу в основному коді різні способи доступу до помічника.
Наприклад, Magento\Catalog\Controller\Category::_initCategoryє таке:
if (!$this->_objectManager->get('Magento\Catalog\Helper\Category')->canShow($category)) {
return false;
}
Але в Magento\Catalog\Block\Category\Viewхелпер вводиться ін конструктор
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Catalog\Model\Layer\Category $catalogLayer,
\Magento\Framework\Registry $registry,
\Magento\Catalog\Helper\Category $categoryHelper,
array $data = array()
) {
$this->_categoryHelper = $categoryHelper;
$this->_catalogLayer = $catalogLayer;
$this->_coreRegistry = $registry;
parent::__construct($context, $data);
}
Це спонукає мене думати, що до контролерів слід звертатися по-різному в контролерах і блоках (і моделях), але тоді я знайшов контролер, де в конструктор вводиться помічник Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute.
Будь ласка, очистіть для мене туман.
Коли я повинен використовувати DI і коли я повинен використовувати objectManager? і чому?
Я читав це питання: Миттєві помічники в Magento 2 . Це лише додаткове питання щодо цього.