1. 是什么
2. 适用场景
1. 是什么
\Class1 -》
public function __construct(\Class2 $argOfClass1){...}
\Class2 -》
public function __construct(\Class3 $argOfClass2){...}
change the type of $argOfClass2
from \Class3
to \Class4
, but only when \Class2
is used as $argOfClass1
没有virtual type的情况下 di.xml
-
<type name="Class1">
<arguments>
<argument name="argOfClass1" xsi:type="object">Class5</argument>
</arguments>
</type>
where \Class5
is the following:
class \Class5 extends \Class2{
public function __construct(\Class4 $argOfClass2){...}
}
此时需要多建立一个类 \Class5.
如果有了virtual type
di.xml
:
<virtualType name="Class5" type="Class2">
<arguments>
<argument name="argOfClass2" xsi:type="string">Class4</argument>
</arguments>
</virtualType>
<type name="Class1">
<arguments>
<argument name="argOfClass1" xsi:type="object">Class5</argument>
</arguments>
</type>
2. 适用场景