当前位置: 技术文章>> magento2中的依赖注入配置以及代码示例

文章标题:magento2中的依赖注入配置以及代码示例
  • 文章分类: Magento
  • 10807 阅读
系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》

本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。


在 Magento 2 中,依赖注入是实现对象之间解耦的关键,也是创建可测试和可扩展代码的基础。下面是一些 Magento 2 中依赖注入的配置和代码示例:


在 di.xml 文件中配置依赖注入:

在 Magento 2 中,依赖注入的配置存储在 di.xml 文件中,这个文件通常位于你的模块的 etc 文件夹中。以下是一个简单的示例,演示了如何将 MyModule\Model\MyModel 类注入到 MyModule\Controller\Index\Index 控制器中:


<!-- File: MyModule/etc/di.xml -->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="MyModule\Controller\Index\Index">
        <arguments>
            <argument name="myModel" xsi:type="object">MyModule\Model\MyModel</argument>
        </arguments>
    </type>
</config>

在构造函数中注入依赖项:

在 Magento 2 中,依赖项通常通过构造函数注入到类中。以下是一个简单的示例,演示了如何将 MyModule\Model\MyModel 类注入到 MyModule\Controller\Index\Index 控制器中:


namespace MyModule\Controller\Index;
use MyModule\Model\MyModel;
class Index extends \Magento\Framework\App\Action\Action
{
    protected $myModel;
    public function __construct(
        MyModel $myModel,
        \Magento\Framework\App\Action\Context $context
    ) {
        $this->myModel = $myModel;
        parent::__construct($context);
    }
    public function execute()
    {
        // Use $this->myModel in your controller logic
    }
}

使用工厂类创建对象:

在 Magento 2 中,如果您需要在某个类中使用另一个类的多个实例,则可以使用工厂类创建对象。以下是一个简单的示例,演示了如何在 MyModule\Controller\Index\Index 控制器中使用工厂类创建 MyModule\Model\MyModel 的多个实例:


namespace MyModule\Controller\Index;
use MyModule\Model\MyModelFactory;
class Index extends \Magento\Framework\App\Action\Action
{
    protected $myModelFactory;
    public function __construct(
        MyModelFactory $myModelFactory,
        \Magento\Framework\App\Action\Context $context
    ) {
        $this->myModelFactory = $myModelFactory;
        parent::__construct($context);
    }
    public function execute()
    {
        $myModel1 = $this->myModelFactory->create();
        $myModel2 = $this->myModelFactory->create();
        // Use $myModel1 and $myModel2 in your controller logic
    }
}

这些是一些 Magento 2 中使用依赖注入的常见示例和配置。通过使用依赖注入,您可以创建可扩展、可测试和松散耦合的代码


推荐文章