diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/EventDispatcherDebugCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/EventDispatcherDebugCommand.php index f30b59cf62..0abe7827f1 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Command/EventDispatcherDebugCommand.php +++ b/src/Symfony/Bundle/FrameworkBundle/Command/EventDispatcherDebugCommand.php @@ -16,6 +16,7 @@ use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\EventDispatcher\EventDispatcherInterface; /** @@ -58,31 +59,24 @@ EOF */ protected function execute(InputInterface $input, OutputInterface $output) { + $output = new SymfonyStyle($input, $output); $dispatcher = $this->getEventDispatcher(); + $options = array(); if ($event = $input->getArgument('event')) { if (!$dispatcher->hasListeners($event)) { - $formatter = $this->getHelperSet()->get('formatter'); - - $formattedBlock = $formatter->formatBlock( - sprintf('[NOTE] The event "%s" does not have any registered listeners.', $event), - 'fg=yellow', - true - ); - - $output->writeln($formattedBlock); + $output->warning(sprintf('The event "%s" does not have any registered listeners.', $event)); return; } $options = array('event' => $event); - } else { - $options = array(); } $helper = new DescriptorHelper(); $options['format'] = $input->getOption('format'); $options['raw_text'] = $input->getOption('raw'); + $options['output'] = $output; $helper->describe($output, $dispatcher, $options); } diff --git a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php index c72abc9f3f..6a763688d2 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php +++ b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php @@ -12,6 +12,7 @@ namespace Symfony\Bundle\FrameworkBundle\Console\Descriptor; use Symfony\Component\Console\Helper\Table; +use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; @@ -349,42 +350,23 @@ class TextDescriptor extends Descriptor { $event = array_key_exists('event', $options) ? $options['event'] : null; - $label = 'Registered listeners'; if (null !== $event) { - $label .= sprintf(' for event %s', $event); + $title = sprintf('Registered Listeners for "%s" Event', $event); } else { - $label .= ' by event'; + $title = 'Registered Listeners Grouped by Event'; } - $this->writeText($this->formatSection('event_dispatcher', $label)."\n", $options); + $options['output']->title($title); - $registeredListeners = $eventDispatcher->getListeners($event); + $registeredListeners = $eventDispatcher->getListeners($event, true); if (null !== $event) { - $this->writeText("\n"); - $table = new Table($this->getOutput()); - $table->getStyle()->setCellHeaderFormat('%s'); - $table->setHeaders(array('Order', 'Callable')); - - foreach ($registeredListeners as $order => $listener) { - $table->addRow(array(sprintf('#%d', $order + 1), $this->formatCallable($listener))); - } - - $table->render(); + $this->renderEventListenerTable($registeredListeners, $options['output']); } else { ksort($registeredListeners); foreach ($registeredListeners as $eventListened => $eventListeners) { - $this->writeText(sprintf("\n[Event] %s\n", $eventListened), $options); - - $table = new Table($this->getOutput()); - $table->getStyle()->setCellHeaderFormat('%s'); - $table->setHeaders(array('Order', 'Callable')); - - foreach ($eventListeners as $order => $eventListener) { - $table->addRow(array(sprintf('#%d', $order + 1), $this->formatCallable($eventListener))); - } - - $table->render(); + $options['output']->section(sprintf('"%s" event', $eventListened)); + $this->renderEventListenerTable($eventListeners, $options['output']); } } } @@ -400,21 +382,20 @@ class TextDescriptor extends Descriptor /** * @param array $array */ - private function renderEventListenerTable(array $eventListeners) + private function renderEventListenerTable(array $eventListeners, SymfonyStyle $renderer) { - $table = new Table($this->getOutput()); - $table->getStyle()->setCellHeaderFormat('%s'); - $table->setHeaders(array('Order', 'Callable', 'Priority')); + $tableHeaders = array('Order', 'Callable', 'Priority'); + $tableRows = array(); krsort($eventListeners); $order = 1; foreach ($eventListeners as $priority => $listeners) { foreach ($listeners as $listener) { - $table->addRow(array(sprintf('#%d', $order++), $this->formatCallable($listener), $priority)); + $tableRows[] = array(sprintf('#%d', $order++), $this->formatCallable($listener), $priority); } } - $table->render(); + $renderer->table($tableHeaders, $tableRows); } /** diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_event1.txt b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_event1.txt index 160bb33483..b8ae6b8c3f 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_event1.txt +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_event1.txt @@ -1,8 +1,9 @@ -[event_dispatcher] Registered listeners for event event1 +Registered Listeners for "event1" Event +======================================= -+-------+-------------------+ -| Order | Callable | -+-------+-------------------+ -| #1 | global_function() | -| #2 | \Closure() | -+-------+-------------------+ \ No newline at end of file + ------- ------------------- ---------- + Order Callable Priority + ------- ------------------- ---------- + #1 global_function() 255 + #2 \Closure() -1 + ------- ------------------- ---------- \ No newline at end of file diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_events.txt b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_events.txt index 84e39634e4..2040a428aa 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_events.txt +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/event_dispatcher_1_events.txt @@ -1,16 +1,21 @@ -[event_dispatcher] Registered listeners by event +Registered Listeners Grouped by Event +===================================== -[Event] event1 -+-------+-------------------+ -| Order | Callable | -+-------+-------------------+ -| #1 | global_function() | -| #2 | \Closure() | -+-------+-------------------+ +"event1" event +-------------- -[Event] event2 -+-------+-----------------------------------------------------------------------------------+ -| Order | Callable | -+-------+-----------------------------------------------------------------------------------+ -| #1 | Symfony\Bundle\FrameworkBundle\Tests\Console\Descriptor\CallableClass::__invoke() | -+-------+-----------------------------------------------------------------------------------+ \ No newline at end of file + ------- ------------------- ---------- + Order Callable Priority + ------- ------------------- ---------- + #1 global_function() 255 + #2 \Closure() -1 + ------- ------------------- ---------- + +"event2" event +-------------- + + ------- ----------------------------------------------------------------------------------- ---------- + Order Callable Priority + ------- ----------------------------------------------------------------------------------- ---------- + #1 Symfony\Bundle\FrameworkBundle\Tests\Console\Descriptor\CallableClass::__invoke() 0 + ------- ----------------------------------------------------------------------------------- ---------- \ No newline at end of file