Magento 2에서 DI 시스템을 둘러싼 머리를 감은 것으로 생각되면 무언가가 나오고 포장이 풀립니다.
핵심 코드에서 도우미에 액세스하는 다른 방법을 봅니다.
예를 들어 다음과 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에서 도우미 인스턴스화 . 이것은 그에 대한 후속 질문입니다.