DI.XMLを使用したObject Manager引数の取り替えについての概要
-
28-09-2020 - |
質問
続いていますオブジェクトマネージャの引数の置き換えチュートリアル。可能なdi.xmlの1つは
のように見えます<type name="Pulsestorm\TutorialObjectManagerArguments\Model\Example">
<arguments>
<argument name="scaler1" xsi:type="string">bar</argument>
</arguments>
</type>
.
モデルExample
のクラスのコンストラクタで、$scaler1
を使用して引数bar
の値を置き換えます。
はコマンドでは
のように見えます<type name="Magento\Framework\Console\CommandList">
<arguments>
<argument name="commands" xsi:type="array">
<item name="testbedCommand" xsi:type="object">Pulsestorm\TutorialObjectManagerArguments\Command\Testbed</item>
</argument>
</arguments>
</type>
.
CommandList
のConstructor引数commands
(アレイタイプのもの)に1つの新しいアイテム(コマンド)を追加する。
モジュール内の任意の場所にtestbedCommand
という名前の使用を見ていません。
何が使い方になりますか?それはユニークなのでしょうか?
解決
Magento \ Framework \ Console \ CommandListでは、項目名は使用されていません。 このクラスを調べると、値のみが使用されていることがわかりますが、配列キーも利用可能です。
モジュールに同じタイプと同じ引数項目名を定義した場合:
<type name="Magento\Framework\Console\CommandList">
<arguments>
<argument name="commands" xsi:type="array">
<item name="testbedCommand" xsi:type="object">Your\Module\Command\Testbed</item>
</argument>
</arguments>
</type>
.
とあなたはPulsestorm \ TutorialObjectManageRargumentsの後に行く、その後、値を取得する引数として:
<argument name="commands" xsi:type="array">
<item name="testbedCommand" xsi:type="object">Your\Module\Command\Testbed</item>
</argument>
. 所属していません magento.stackexchange