Viewing file: EventGenerateCommand.php (2.04 KB) -rwxrwxr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Illuminate\Foundation\Console;
use Illuminate\Console\Command; use Illuminate\Foundation\Support\Providers\EventServiceProvider;
class EventGenerateCommand extends Command { /** * The console command name. * * @var string */ protected $name = 'event:generate';
/** * The name of the console command. * * This name is used to identify the command during lazy loading. * * @var string|null */ protected static $defaultName = 'event:generate';
/** * The console command description. * * @var string */ protected $description = 'Generate the missing events and listeners based on registration';
/** * Execute the console command. * * @return void */ public function handle() { $providers = $this->laravel->getProviders(EventServiceProvider::class);
foreach ($providers as $provider) { foreach ($provider->listens() as $event => $listeners) { $this->makeEventAndListeners($event, $listeners); } }
$this->info('Events and listeners generated successfully!'); }
/** * Make the event and listeners for the given event. * * @param string $event * @param array $listeners * @return void */ protected function makeEventAndListeners($event, $listeners) { if (! str_contains($event, '\\')) { return; }
$this->callSilent('make:event', ['name' => $event]);
$this->makeListeners($event, $listeners); }
/** * Make the listeners for the given event. * * @param string $event * @param array $listeners * @return void */ protected function makeListeners($event, $listeners) { foreach ($listeners as $listener) { $listener = preg_replace('/@.+$/', '', $listener);
$this->callSilent('make:listener', array_filter( ['name' => $listener, '--event' => $event] )); } } }
|