vendor/symfony/http-kernel/EventListener/DumpListener.php line 39

Open in your IDE?
  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\Component\HttpKernel\EventListener;
  11. use Symfony\Component\Console\ConsoleEvents;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\VarDumper\Cloner\ClonerInterface;
  14. use Symfony\Component\VarDumper\Dumper\DataDumperInterface;
  15. use Symfony\Component\VarDumper\Server\Connection;
  16. use Symfony\Component\VarDumper\VarDumper;
  17. /**
  18. * Configures dump() handler.
  19. *
  20. * @author Nicolas Grekas <p@tchwork.com>
  21. */
  22. class DumpListener implements EventSubscriberInterface
  23. {
  24. private $cloner;
  25. private $dumper;
  26. private $connection;
  27. public function __construct(ClonerInterface $cloner, DataDumperInterface $dumper, ?Connection $connection = null)
  28. {
  29. $this->cloner = $cloner;
  30. $this->dumper = $dumper;
  31. $this->connection = $connection;
  32. }
  33. public function configure()
  34. {
  35. $cloner = $this->cloner;
  36. $dumper = $this->dumper;
  37. $connection = $this->connection;
  38. VarDumper::setHandler(static function ($var) use ($cloner, $dumper, $connection) {
  39. $data = $cloner->cloneVar($var);
  40. if (!$connection || !$connection->write($data)) {
  41. $dumper->dump($data);
  42. }
  43. });
  44. }
  45. public static function getSubscribedEvents()
  46. {
  47. if (!class_exists(ConsoleEvents::class)) {
  48. return [];
  49. }
  50. // Register early to have a working dump() as early as possible
  51. return [ConsoleEvents::COMMAND => ['configure', 1024]];
  52. }
  53. }