เมื่อฉันคิดว่าฉันเอาหัวของฉันพันรอบระบบ 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
ใด และทำไม?
ฉันได้อ่านคำถามนี้: อินสแตนซ์ช่วยในวีโอไอพี 2 นี่เป็นเพียงคำถามติดตามที่