Magento 2依赖注入

当您转换为与Magento 2一起使用时, Magento 2依赖关系注入用于替换Magento 1.x Mage类。依赖关系注入设计模式创建了一个外部环境,您可以在其中注入依赖关系到对象中。因此,不再需要手动创建对象。即,当对象A调用对象或值B时,这意味着B是A的依赖项。

目录

Magento 2依赖反转原理

如果您正在使用Magento 2依赖注入,则应查看Magento 2依赖反转原理,因为该原理将限制高层和低级类之间的直接工作。那时,交互将通过低级类的接口作为抽象层实现。

具体来说,该di.xml文件负责将接口依赖关系映射到首选实现类。可以说,借助Magento 2依赖反转原理,由于抽象层的存在,编码的依赖将大大降低。

对象管理器-依赖注入容器

对象管理器称为依赖注入容器,Magento 2服务类,其中包含并处理对象之间的依赖关系。在类构造过程中,对象管理器将注入di.xml文件中定义的适当依赖项。

构造函数签名依赖性

在Magento 2中,类定义使用构造函数签名来获取信息(依赖项的类型和数量)。

编译依赖

与Magento 2依赖注入相关的所有信息都收集在一个类中,并通过代码编译器工具保存在文件中。然后,ObjectManager它将获取此信息以在应用程序中生成具体对象。

Magento 2中使用的注射类型

Magento 2依赖注入包括两种类型:构造函数注入和方法注入。您可以查看以下代码片段,以了解有关它们的更多信息。

namespace Magento\Backend\Model\Menu;
class Builder
{
    /**
     * @param \Magento\Backend\Model\Menu\Item\Factory $menuItemFactory
     * @param \Magento\Backend\Model\Menu $menu
     */
    public function __construct(
        Magento\Backend\Model\Menu\Item\Factory $menuItemFactory,  // Service dependency
        Magento\Backend\Model\Menu $menu  // Service dependency
    ) {
        $this->_itemFactory = $menuItemFactory;
        $this->_menu = $menu;
    }

    public function processCommand(\Magento\Backend\Model\Menu\Builder\CommandAbstract $command) // API param
    {
        // processCommand Code
    }
}

构造器注入

如上例所示,$menuItemFactory$menu是将通过构造函数注入添加到对象的类的依赖项。此外,请记住,需要构造函数注入来声明对象的所有可选和必需。

方法注入

关于“方法注入”,当对象明确表示其方法之一的依赖项时,将使用它。就像在引用实例中进行跟踪一样,$command依赖项是通过processCommand方法传递给类的。

对象组

在Magento 2中,对象分为两组:可注射对象和不可注射(新的)对象。这些是什么?

可注射物体

关于可注入对象,您可以将其称为服务或对象,将在其构造函数中显示依赖关系,并由对象管理器通过di.xml文件中的配置创建。您可以使用这些可注入对象在构造函数中请求其他可注入服务。

不可注射物体

不可注入(新的)对象在其构造函数中也公开依赖项时,与可注入的对象有点相似,但是,可允许新对象请求其他新对象,例如实体,值对象。另外,您不能要求可更新对象保留对可注射对象的引用。

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论