DebugBundle.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Bundle\DebugBundle;
  11. use Symfony\Bundle\DebugBundle\DependencyInjection\Compiler\DumpDataCollectorPass;
  12. use Symfony\Component\Console\Application;
  13. use Symfony\Component\DependencyInjection\ContainerBuilder;
  14. use Symfony\Component\HttpKernel\Bundle\Bundle;
  15. use Symfony\Component\VarDumper\VarDumper;
  16. /**
  17. * @author Nicolas Grekas <p@tchwork.com>
  18. */
  19. class DebugBundle extends Bundle
  20. {
  21. public function boot()
  22. {
  23. if ($this->container->getParameter('kernel.debug')) {
  24. $container = $this->container;
  25. // This code is here to lazy load the dump stack. This default
  26. // configuration is overridden in CLI mode on 'console.command' event.
  27. // The dump data collector is used by default, so dump output is sent to
  28. // the WDT. In a CLI context, if dump is used too soon, the data collector
  29. // will buffer it, and release it at the end of the script.
  30. VarDumper::setHandler(function ($var) use ($container) {
  31. $dumper = $container->get('data_collector.dump');
  32. $cloner = $container->get('var_dumper.cloner');
  33. $handler = function ($var) use ($dumper, $cloner) {
  34. $dumper->dump($cloner->cloneVar($var));
  35. };
  36. VarDumper::setHandler($handler);
  37. $handler($var);
  38. });
  39. }
  40. }
  41. /**
  42. * {@inheritdoc}
  43. */
  44. public function build(ContainerBuilder $container)
  45. {
  46. parent::build($container);
  47. $container->addCompilerPass(new DumpDataCollectorPass());
  48. }
  49. public function registerCommands(Application $application)
  50. {
  51. // noop
  52. }
  53. }