Application.php
protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output)
    {
        foreach ($command->getHelperSet() as $helper) {
            if ($helper instanceof InputAwareInterface) {
                $helper->setInput($input);
            }
        }

        if (null === $this->dispatcher) {
            return $command->run($input, $output);
        }

        // bind before the console.command event, so the listeners have access to input options/arguments
        try {
            $command->mergeApplicationDefinition();
            $input->bind($command->getDefinition());
        } catch (ExceptionInterface $e) {
            // ignore invalid options/arguments for now, to allow the event listeners to customize the InputDefinition
        }

        $event = new ConsoleCommandEvent($command, $input, $output);
        $e = null;

        try {
            $this->dispatcher->dispatch(ConsoleEvents::COMMAND, $event);

            if ($event->commandShouldRun()) {
                $exitCode = $command->run($input, $output);
            } else {
                $exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED;
            }
        } catch (\Exception $e) {
        } catch (\Throwable $e) {
        }
        if (null !== $e) {
            if ($this->dispatcher->hasListeners(ConsoleEvents::EXCEPTION)) {
                $x = $e instanceof \Exception ? $e : new FatalThrowableError($e);
                $event = new ConsoleExceptionEvent($command, $input, $output, $x, $x->getCode());
                $this->dispatcher->dispatch(ConsoleEvents::EXCEPTION, $event);

                if ($x !== $event->getException()) {
                    $e = $event->getException();
                }
            }
            $event = new ConsoleErrorEvent($input, $output, $e, $command);
            $this->dispatcher->dispatch(ConsoleEvents::ERROR, $event);
            $e = $event->getError();

            if (0 === $exitCode = $event->getExitCode()) {
                $e = null;
            }
        }

        $event = new ConsoleTerminateEvent($command, $input, $output, $exitCode);
        $this->dispatcher->dispatch(ConsoleEvents::TERMINATE, $event);

        if (null !== $e) {
            throw $e;
        }

        return $event->getExitCode();
    }
protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output)
    {
        foreach ($command->getHelperSet() as $helper) {
            if ($helper instanceof InputAwareInterface) {
                $helper->setInput($input);
            }
        }

        if (null === $this->dispatcher) {
            return $command->run($input, $output);
        }

        // bind before the console.command event, so the listeners have access to input options/arguments
        try {
            $command->mergeApplicationDefinition();
            $input->bind($command->getDefinition());
        } catch (ExceptionInterface $e) {
            // ignore invalid options/arguments for now, to allow the event listeners to customize the InputDefinition
        }

        $event = new ConsoleCommandEvent($command, $input, $output);
        $e = null;

        try {
            $this->dispatcher->dispatch(ConsoleEvents::COMMAND, $event);

            if ($event->commandShouldRun()) {
                $exitCode = $command->run($input, $output);
            } else {
                $exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED;
            }
        } catch (\Exception $e) {
        } catch (\Throwable $e) {
        }
        if (null !== $e) {
            if ($this->dispatcher->hasListeners(ConsoleEvents::EXCEPTION)) {
                $x = $e instanceof \Exception ? $e : new FatalThrowableError($e);
                $event = new ConsoleExceptionEvent($command, $input, $output, $x, $x->getCode());
                $this->dispatcher->dispatch(ConsoleEvents::EXCEPTION, $event);

                if ($x !== $event->getException()) {
                    $e = $event->getException();
                }
            }
            $event = new ConsoleErrorEvent($input, $output, $e, $command);
            $this->dispatcher->dispatch(ConsoleEvents::ERROR, $event);
            $e = $event->getError();

            if (0 === $exitCode = $event->getExitCode()) {
                $e = null;
            }
        }

        $event = new ConsoleTerminateEvent($command, $input, $output, $exitCode);
        $this->dispatcher->dispatch(ConsoleEvents::TERMINATE, $event);

        if (null !== $e) {
            throw $e;
        }

        return $event->getExitCode();
    }
protected function doRunCommand ( Command $ command , InputInterface $ input , OutputInterface $ output ) { foreach ( $ command -> getHelperSet ( ) as $ helper ) { if ( $ helper instanceof InputAwareInterface ) { $ helper -> setInput ( $ input ) ; } } if ( null === $ this -> dispatcher ) { return $ command -> run ( $ input , $ output ) ; } // bind before the console.command event, so the listeners have access to input options/arguments try { $ command -> mergeApplicationDefinition ( ) ; $ input -> bind ( $ command -> getDefinition ( ) ) ; } catch ( ExceptionInterface $ e ) { // ignore invalid options/arguments for now, to allow the event listeners to customize the InputDefinition } $ event = new ConsoleCommandEvent ( $ command , $ input , $ output ) ; $ e = null ; try { $ this -> dispatcher -> dispatch ( ConsoleEvents :: COMMAND , $ event ) ; if ( $ event -> commandShouldRun ( ) ) { $ exitCode = $ command -> run ( $ input , $ output ) ; } else { $ exitCode = ConsoleCommandEvent :: RETURN_CODE_DISABLED ; } } catch ( \ Exception $ e ) { } catch ( \ Throwable $ e ) { } if ( null !== $ e ) { if ( $ this -> dispatcher -> hasListeners ( ConsoleEvents :: EXCEPTION ) ) { $ x = $ e instanceof \ Exception ? $ e : new FatalThrowableError ( $ e ) ; $ event = new ConsoleExceptionEvent ( $ command , $ input , $ output , $ x , $ x -> getCode ( ) ) ; $ this -> dispatcher -> dispatch ( ConsoleEvents :: EXCEPTION , $ event ) ; if ( $ x !== $ event -> getException ( ) ) { $ e = $ event -> getException ( ) ; } } $ event = new ConsoleErrorEvent ( $ input , $ output , $ e , $ command ) ; $ this -> dispatcher -> dispatch ( ConsoleEvents :: ERROR , $ event ) ; $ e = $ event -> getError ( ) ; if ( 0 === $ exitCode = $ event -> getExitCode ( ) ) { $ e = null ; } } $ event = new ConsoleTerminateEvent ( $ command , $ input , $ output , $ exitCode ) ; $ this -> dispatcher -> dispatch ( ConsoleEvents :: TERMINATE , $ event ) ; if ( null !== $ e ) { throw $ e ; } return $ event -> getExitCode ( ) ; }
Runs the current command.

If an event dispatcher has been attached to the application,
events are also dispatched during the life-cycle of the command.

@param Command         $command A Command instance
@param InputInterface  $input   An Input instance
@param OutputInterface $output  An Output instance

@return int 0 if everything went fine, or an error code
Runs the current command .