Why Magento is using $this->_objectManager->create()
directly in function _initCategory in file vendor/magento/module-catalog/Controller/Adminhtml/Category.php
?
protected function _initCategory($getRootInstead = false)
{
$categoryId = $this->resolveCategoryId();
$storeId = (int)$this->getRequest()->getParam('store');
$category = $this->_objectManager->create(\Magento\Catalog\Model\Category::class);
$category->setStoreId($storeId);
if ($categoryId) {
$category->load($categoryId);
if ($storeId) {
$rootId = $this->_objectManager->get(
\Magento\Store\Model\StoreManagerInterface::class
)->getStore(
$storeId
)->getRootCategoryId();
if (!in_array($rootId, $category->getPathIds())) {
// load root category instead wrong one
if ($getRootInstead) {
$category->load($rootId);
} else {
return false;
}
}
}
}
$this->_objectManager->get(\Magento\Framework\Registry::class)->register('category', $category);
$this->_objectManager->get(\Magento\Framework\Registry::class)->register('current_category', $category);
$this->_objectManager->get(\Magento\Cms\Model\Wysiwyg\Config::class)
->setStoreId($this->getRequest()->getParam('store'));
return $category;
}
As per the Magento recommendation, we should include class/object in constructor using DI. So, why is it so?
Or Am I reading this code incorrectly?