Viewing file: ClosureCommand.php (1.92 KB) -rwxrwxr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Illuminate\Foundation\Console;
use Closure; use Illuminate\Console\Command; use ReflectionFunction; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface;
class ClosureCommand extends Command { /** * The command callback. * * @var \Closure */ protected $callback;
/** * Create a new command instance. * * @param string $signature * @param \Closure $callback * @return void */ public function __construct($signature, Closure $callback) { $this->callback = $callback; $this->signature = $signature;
parent::__construct(); }
/** * Execute the console command. * * @param \Symfony\Component\Console\Input\InputInterface $input * @param \Symfony\Component\Console\Output\OutputInterface $output * @return int */ protected function execute(InputInterface $input, OutputInterface $output) { $inputs = array_merge($input->getArguments(), $input->getOptions());
$parameters = [];
foreach ((new ReflectionFunction($this->callback))->getParameters() as $parameter) { if (isset($inputs[$parameter->getName()])) { $parameters[$parameter->getName()] = $inputs[$parameter->getName()]; } }
return (int) $this->laravel->call( $this->callback->bindTo($this, $this), $parameters ); }
/** * Set the description for the command. * * @param string $description * @return $this */ public function purpose($description) { return $this->describe($description); }
/** * Set the description for the command. * * @param string $description * @return $this */ public function describe($description) { $this->setDescription($description);
return $this; } }
|