/vendor/laravel/framework/src/Illuminate/Console/Application.php
https://gitlab.com/Pasantias/pasantiasASLG · PHP · 172 lines · 74 code · 27 blank · 71 comment · 1 complexity · 5e3dd369ffd170ce9ab9a5d3d4a688f9 MD5 · raw file
- <?php
- namespace Illuminate\Console;
- use Illuminate\Contracts\Events\Dispatcher;
- use Illuminate\Contracts\Container\Container;
- use Symfony\Component\Console\Input\ArrayInput;
- use Symfony\Component\Console\Input\InputOption;
- use Symfony\Component\Console\Output\BufferedOutput;
- use Symfony\Component\Console\Application as SymfonyApplication;
- use Symfony\Component\Console\Command\Command as SymfonyCommand;
- use Illuminate\Contracts\Console\Application as ApplicationContract;
- class Application extends SymfonyApplication implements ApplicationContract
- {
- /**
- * The Laravel application instance.
- *
- * @var \Illuminate\Contracts\Container\Container
- */
- protected $laravel;
- /**
- * The output from the previous command.
- *
- * @var \Symfony\Component\Console\Output\BufferedOutput
- */
- protected $lastOutput;
- /**
- * Create a new Artisan console application.
- *
- * @param \Illuminate\Contracts\Container\Container $laravel
- * @param \Illuminate\Contracts\Events\Dispatcher $events
- * @param string $version
- * @return void
- */
- public function __construct(Container $laravel, Dispatcher $events, $version)
- {
- parent::__construct('Laravel Framework', $version);
- $this->laravel = $laravel;
- $this->setAutoExit(false);
- $this->setCatchExceptions(false);
- $events->fire('artisan.start', [$this]);
- }
- /**
- * Run an Artisan console command by name.
- *
- * @param string $command
- * @param array $parameters
- * @return int
- */
- public function call($command, array $parameters = [])
- {
- $parameters = collect($parameters)->prepend($command);
- $this->lastOutput = new BufferedOutput;
- $this->setCatchExceptions(false);
- $result = $this->run(new ArrayInput($parameters->toArray()), $this->lastOutput);
- $this->setCatchExceptions(true);
- return $result;
- }
- /**
- * Get the output for the last run command.
- *
- * @return string
- */
- public function output()
- {
- return $this->lastOutput ? $this->lastOutput->fetch() : '';
- }
- /**
- * Add a command to the console.
- *
- * @param \Symfony\Component\Console\Command\Command $command
- * @return \Symfony\Component\Console\Command\Command
- */
- public function add(SymfonyCommand $command)
- {
- if ($command instanceof Command) {
- $command->setLaravel($this->laravel);
- }
- return $this->addToParent($command);
- }
- /**
- * Add the command to the parent instance.
- *
- * @param \Symfony\Component\Console\Command\Command $command
- * @return \Symfony\Component\Console\Command\Command
- */
- protected function addToParent(SymfonyCommand $command)
- {
- return parent::add($command);
- }
- /**
- * Add a command, resolving through the application.
- *
- * @param string $command
- * @return \Symfony\Component\Console\Command\Command
- */
- public function resolve($command)
- {
- return $this->add($this->laravel->make($command));
- }
- /**
- * Resolve an array of commands through the application.
- *
- * @param array|mixed $commands
- * @return $this
- */
- public function resolveCommands($commands)
- {
- $commands = is_array($commands) ? $commands : func_get_args();
- foreach ($commands as $command) {
- $this->resolve($command);
- }
- return $this;
- }
- /**
- * Get the default input definitions for the applications.
- *
- * This is used to add the --env option to every available command.
- *
- * @return \Symfony\Component\Console\Input\InputDefinition
- */
- protected function getDefaultInputDefinition()
- {
- $definition = parent::getDefaultInputDefinition();
- $definition->addOption($this->getEnvironmentOption());
- return $definition;
- }
- /**
- * Get the global environment option for the definition.
- *
- * @return \Symfony\Component\Console\Input\InputOption
- */
- protected function getEnvironmentOption()
- {
- $message = 'The environment the command should run under.';
- return new InputOption('--env', null, InputOption::VALUE_OPTIONAL, $message);
- }
- /**
- * Get the Laravel application instance.
- *
- * @return \Illuminate\Contracts\Foundation\Application
- */
- public function getLaravel()
- {
- return $this->laravel;
- }
- }