> Magento2中文手册 > 依赖注入

依赖注入

依赖注入概述

Magento 2 使用依赖注入 替代 Magento 1.x Mage 类. 依赖注入是外部环境的概念,它为对象注入依赖关系,而不是手动在内部创建对象。

简单地说,当对象A需要对象b或值来完成函数时,那么B是a的依赖项。

依赖倒置原则

使用依赖注入时,我们鼓励你遵循依赖倒置原则,编码原则,规定你用抽象来减少代码的依赖。 这意味着高级类应该使用低级别类的接口,而不是直接使用它。

di.xml 文件映射到首选实现类的接口依赖性。

对象管理器

对象管理器 是一个Magento服务类,可以实例化对象在引导过程的开始。

在类构建过程中,对象管理器将在 di.xml 文件.

构造函数签名依赖

Magento使用类的构造函数的签名,不是 DocBlock 注释,来找回什么依赖信息传递给对象的构造函数。 如果代码遵循依赖倒置原理,使用接口而不是具体实现,则不必担心类定义。

编译依赖

代码编译工具 收集类中的所有依赖信息并将这些信息存储在文件中。 对象管理器(ObjectManager) 使用此信息在应用程序中创建具体对象。

换句话说,编译器可以产生所有不存在的依赖注入服务类 (proxies(代理), factories(工厂) 和 interceptors(拦截器)) 在代码或配置中声明的。

使用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
    }
}

构造函数注入

方法注入

相关话题

  • di.xml 文件
  • 对象管理器(ObjectManager)
  • Plugins(插件)
  • 路由
  • Magento 2 初始化和引导
  • 模块依赖
  • 程序设计概念