2012-10-12 1 views
0

Je crée une commande de console dans symfony2. J'ai besoin de connecter une ligne exécutée que je cours. Comment obtenir cette ligne?symfony2 exécute la ligne de commande

Donc, si je lance:

php app/console my-command fileName.txt --myoption=100 

Je veux obtenir la valeur "application php/console my-commande NomFichier.txt --myoption = 100"

Merci pour toute aide

Répondre

1

J'interprète la question comme suit: Dans le code de commande lui-même, vous voulez déterminer ce qui a été écrit sur la ligne de commande afin de terminer l'exécution de cette commande Symfony?

Si c'est correct, alors je ne pense pas qu'il soit possible de l'obtenir exactement. Cependant, vous devriez être en mesure d'obtenir [presque?] Le même effet en faisant ceci:

implode(" ", $_SERVER['argv']) 

Exemple:

class SomeCommand extends ContainerAwareCommand 
{ 
    protected function execute(InputInterface $input, OutputInterface $output) 
    {  
     $output->writeln(implode(" ", $_SERVER['argv'])); 
    } 
} 
1

Si vous regardez la classe ArgvInput vous remarquerez peut-être que les valeurs argv sont holded dans propriété privée sans getter. Fondamentalement, cela signifie que vous ne pouvez pas accéder à cette information. Bien sûr, vous pouvez utiliser $ _SERVER ['argv'] directement mais ce n'est pas une solution très jolie. Donc, il semble qu'il n'y ait pas de moyen «propre» ou «facile» pour réaliser exactement ce que vous voulez.

Cependant, vous avez accès à toutes les informations dont vous avez besoin.

$this->getName(); // gets name of command (eg. "my-comand") 
$input->getArguments(); // gets all arguments (eg. "fileName.txt") 
$input->getOptions(); // get all options (eg. --myoption => 100) 

Vous pouvez le mettre ensemble à une chaîne. Mais c'est après la validation, donc si vous avez besoin de consigner les mauvaises commandes aussi (je veux dire avec de mauvais paramètres et ainsi de suite) cela ne passe pas l'examen.

+0

cela peut aussi être une solution. Merci –

Questions connexes