আমি যখন মনে করি আমি 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।
আমার জন্য কুয়াশা সাফ করুন।
আমার কখন ডিআই ব্যবহার করা উচিত এবং কখন ব্যবহার করা উচিত objectManager? এবং কেন?
আমি এই প্রশ্নটি পড়েছি: ম্যাজেন্টো 2-এ সহায়িকা ইনস্ট্যান্ট করছে । এটি কেবল এটির একটি ফলোআপ প্রশ্ন।