관리-도구
편집 파일: EventGenerateCommand.php
<?php namespace Illuminate\Foundation\Console; use Illuminate\Console\Command; use Illuminate\Foundation\Support\Providers\EventServiceProvider; use Illuminate\Support\Str; class EventGenerateCommand extends Command { /** * The console command name. * * @var string */ protected $name = '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] )); } } }