Comprensione della sostituzione dell'argomento Gestione oggetto con DI.XML per i comandi
-
28-09-2020 - |
Domanda
Sto seguendo Object Manager Argomento Sostituzione Tutorial.Uno dei possibili di.xml sembra
<type name="Pulsestorm\TutorialObjectManagerArguments\Model\Example">
<arguments>
<argument name="scaler1" xsi:type="string">bar</argument>
</arguments>
</type>
.
Il che significa nel modello del costruttore della classe di Classe Model Example
, sostituire (qualsiasi altro vecchio) del valore dell'argomento $scaler1
con bar
.
considerando che per i comandi sembra
<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>
.
che dice Aggiungi 1 nuovo elemento (comando) nell'argomento del costruttore di CommandList
commands
(che è di tipo array).
Non vedo l'uso del nome testbedCommand
ovunque nel modulo.
Cosa sarà l'utilizzo?Dovrebbe essere unico?
Soluzione
Un nome dell'oggetto non è utilizzato in Commandlist di Magento \ Framework \ Console. Se si guarda in questa classe, puoi vedere, che solo i valori sono utilizzati, tuttavia sono disponibili anche le chiavi dell'array.
Se si definisce nel modulo lo stesso tipo e con lo stesso argomento Nome elemento:
<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>
.
E il tuo modulo diventa dopo Pulsestorm \ TutorialObjectManageRaRagumenti, quindi come argomento otterrai il tuo valore:
<argument name="commands" xsi:type="array">
<item name="testbedCommand" xsi:type="object">Your\Module\Command\Testbed</item>
</argument>
.