Ecco un modo migliore di collegarsi al sistema di test: utilizzare l'interfaccia della riga di comando di Magento 2.
Ciò significa che dovrai integrare il tuo codice sandbox in un modulo reale (o crearne uno per lo scopo), ma dovresti farlo comunque.
Una volta impostato il modulo , l' aggiunta di un comando è abbastanza semplice. Tutto ciò che serve è la classe e DI per registrarla.
1. {modulo} /etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\Console\CommandList">
<arguments>
<argument name="commands" xsi:type="array">
<item name="greeting_command" xsi:type="object">Magento\CommandExample\Console\Command\GreetingCommand</item>
</argument>
</arguments>
</type>
</config>
2. {modulo} /Console/Command/GreetingCommand.php
<?php
namespace Magento\CommandExample\Console\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
/**
* Class GreetingCommand
*/
class GreetingCommand extends Command
{
/**
* {@inheritdoc}
*/
protected function configure()
{
$this->setName('example:greeting')
->setDescription('Greeting command');
parent::configure();
}
/**
* {@inheritdoc}
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln('<info>Hello world!</info>');
}
}
Esempio derivato da https://github.com/magento/magento2-samples/tree/master/sample-module-command - vedi qui per un modulo completo che incorpora questa funzionalità. Ci sono esempi meno banali inclusi.
Per convenzione, la tua classe di comando dovrebbe essere sempre dentro {module}/Console/Command
e finire con Command.php
.
Dopo aver aggiunto i due pezzi di codice (e la cache Magento arrossata, ecc), eseguire il comando per nome in SSH: php bin/magento example:greeting
.
È possibile utilizzare l'iniezione di dipendenza in questo contesto, quindi è possibile eseguire qualsiasi codice si desideri all'interno execute()
.
Questa interfaccia è costruita sul componente Console di Symfony , quindi hai anche pieno accesso a tutta quella vasta gamma di funzionalità, incluse opzioni / argomenti , tabelle e barre di avanzamento molto facili .
In caso di problemi durante l'impostazione del comando o delle opzioni, in genere è possibile eseguire il comando 'list' per ottenere una migliore visibilità su ciò che non va: php bin/magento list
Godere.