/
home
/
sjslayjy
/
public_html
/
theweavenest
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Foundation
/
Console
/
Upload File
HOME
<?php namespace Illuminate\Foundation\Console; use Illuminate\Console\Concerns\CreatesMatchingTest; use Illuminate\Console\GeneratorCommand; use Illuminate\Support\Str; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; #[AsCommand(name: 'make:listener')] class ListenerMakeCommand extends GeneratorCommand { use CreatesMatchingTest; /** * The console command name. * * @var string */ protected $name = 'make:listener'; /** * The name of the console command. * * This name is used to identify the command during lazy loading. * * @var string|null * * @deprecated */ protected static $defaultName = 'make:listener'; /** * The console command description. * * @var string */ protected $description = 'Create a new event listener class'; /** * The type of class being generated. * * @var string */ protected $type = 'Listener'; /** * Build the class with the given name. * * @param string $name * @return string */ protected function buildClass($name) { $event = $this->option('event'); if (! Str::startsWith($event, [ $this->laravel->getNamespace(), 'Illuminate', '\\', ])) { $event = $this->laravel->getNamespace().'Events\\'.str_replace('/', '\\', $event); } $stub = str_replace( ['DummyEvent', '{{ event }}'], class_basename($event), parent::buildClass($name) ); return str_replace( ['DummyFullEvent', '{{ eventNamespace }}'], trim($event, '\\'), $stub ); } /** * Get the stub file for the generator. * * @return string */ protected function getStub() { if ($this->option('queued')) { return $this->option('event') ? __DIR__.'/stubs/listener-queued.stub' : __DIR__.'/stubs/listener-queued-duck.stub'; } return $this->option('event') ? __DIR__.'/stubs/listener.stub' : __DIR__.'/stubs/listener-duck.stub'; } /** * Determine if the class already exists. * * @param string $rawName * @return bool */ protected function alreadyExists($rawName) { return class_exists($rawName); } /** * Get the default namespace for the class. * * @param string $rootNamespace * @return string */ protected function getDefaultNamespace($rootNamespace) { return $rootNamespace.'\Listeners'; } /** * Get the console command options. * * @return array */ protected function getOptions() { return [ ['event', 'e', InputOption::VALUE_OPTIONAL, 'The event class being listened for'], ['force', 'f', InputOption::VALUE_NONE, 'Create the class even if the listener already exists'], ['queued', null, InputOption::VALUE_NONE, 'Indicates the event listener should be queued'], ]; } /** * Interact further with the user if they were prompted for missing arguments. * * @param \Symfony\Component\Console\Input\InputInterface $input * @param \Symfony\Component\Console\Output\OutputInterface $output * @return void */ protected function afterPromptingForMissingArguments(InputInterface $input, OutputInterface $output) { if ($this->isReservedName($this->getNameInput()) || $this->didReceiveOptions($input)) { return; } $event = $this->components->askWithCompletion( 'What event should be listened for?', $this->possibleEvents(), 'none' ); if ($event && $event !== 'none') { $input->setOption('event', $event); } } }