概述
di.xml
文件配置 依赖 注入 对象管理器.
区域和应用入口点
每个模块可以有一个全局和区域特定 di.xml
文件.
Magento 2读取系统中定义的所有di.xml配置文件合并在一起通过添加所有节点。
作为一般规则,特定区域的di.xml文件应该配置为表示层依赖,和你的模块的全局di.xml文件应该配置附属的依赖。
Magento 2加载配置在以下几个阶段 :
- Initial(初始) (
app/etc/di.xml
)
- Global(全局) (
<模块目录>/etc/di.xml
)
- Area-specific(特定区域) (
<模块目录>/etc/<area>/di.xml
)
在 bootstrapping(引导程序), 每个应用程序的入口点加载适当的 di.xml
文件在要求 area(区域)。
示例:
-
在 index.php
, \Magento\Framework\App\Http
类根据URL中提供的名称加载区域。
-
在 static.php
, \Magento\Framework\App\StaticResource
类还根据请求中的URL加载区域。
-
在 cron.php
, \Magento\Framework\App\Cron
类加载‘crontab’区域.
类型配置
类型配置描述对象的生命周期以及如何实例化它。
你可以在 di.xml
文件中配置节点的方式如下:
上面的示例声明以下类型:
-
moduleConfig
: 扩展类型的继承类型 Magento\Core\Model\Config
.
-
Magento\Core\Model\App
: 此类型的所有实例都依赖moduleConfig
.
构造函数的参数
参数类型
object
- 节点的格式:
-
<argument xsi:type="object">{typeName}</argument>
<argument xsi:type="object" shared="{shared}">{typeName}</argument>
string
- 节点的格式:
-
<argument xsi:type="string">{strValue}</argument>
<argument xsi:type="string" translate="true">{strValue}</argument>
boolean
- 节点的格式:
-
<argument xsi:type="boolean">{boolValue}</argument>
见下表:
Input Type |
Data |
Boolean Value |
Boolean |
true |
true |
Boolean |
false |
false |
String |
“true”* |
true |
String |
“false”* |
false |
String |
“1” |
true |
String |
“0” |
false |
Integer |
1 |
true |
Integer |
0 |
false |
number
- 节点的格式:
-
<argument xsi:type="number">{numericValue}</argument>
init_parameter
- 节点的格式:
-
<argument xsi:type="init_parameter">{ConstAnt::NAME}</argument>
const
- 节点的格式:
-
<argument xsi:type="const">{Constant::NAME}</argument>
null
- 节点的格式:
-
<argument xsi:type="null"/>
array
- 节点的格式:
-
<argument xsi:type="array">
<item name="someKey" xsi:type="<type>">someVal</item>
</argument>
示例:
相关话题
- 对象管理器(ObjectManager)
- 依赖注入