Pour comprendre la question du débogage ponctuel, vous pouvez toujours imprimer des messages de débogage avec echo
o var_dump
Si vous envisagez d'utiliser une commande sans l'application Symfony avec des messages de débogage globaux, voici un moyen de le faire.
Symfony offre 3 différents OutputInterface
s
-
NullOutput - Il n'y aura pas de sortie du tout et la commande restera silencieuse.
-
Sortie de console - Les messages de la console s'afficheront
-
Sortie de flux - Permet d'imprimer des messages dans un flux donné
Débogage vers un fichier
Ainsi, chaque fois que vous appelez $output->writeln()
dans votre commande, il écrira une nouvelle ligne dans le fichier /path/to/debug/file.log
use Symfony\Component\Console\Output\StreamOutput;
use Symfony\Component\Console\Input\ArrayInput;
use Acme\FooBundle\Command\MyCommand;
$params = array();
$input = new ArrayInput($params);
$file = '/path/to/debug/file.log';
$handle = fopen($file, 'w+');
$output = new StreamOutput($handle);
$command = new MyCommand;
$command->run($input, $output);
fclose($handle);
Débogage dans la console
C'est tranquillement le même processus, sauf que vous utilisez ConsoleOutput
au lieu de
use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\Console\Input\ArrayInput;
use Acme\FooBundle\Command\MyCommand;
$params = array();
$input = new ArrayInput($params);
$output = new ConsoleOutput();
$command = new MyCommand;
$command->run($input, $output);
Pas de débogage
Aucun message ne sera imprimé
use Symfony\Component\Console\Output\NullOutput;
use Symfony\Component\Console\Input\ArrayInput;
use Acme\FooBundle\Command\MyCommand;
$params = array();
$input = new ArrayInput($params);
$output = new NullOutput();
$command = new MyCommand;
$command->run($input, $output);