presenter = $presenter; } /** * {@inheritdoc} */ protected function configure() { $this ->setName('dump') ->setDefinition(array( new InputArgument('target', InputArgument::REQUIRED, 'A target object or primitive to dump.', null), new InputOption('depth', '', InputOption::VALUE_REQUIRED, 'Depth to parse', 10), new InputOption('all', 'a', InputOption::VALUE_NONE, 'Include private and protected methods and properties.'), )) ->setDescription('Dump an object or primitive.') ->setHelp( <<<'HELP' Dump an object or primitive. This is like var_dump but way awesomer. e.g. >>> dump $_ >>> dump $someVar HELP ); } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $depth = $input->getOption('depth'); $target = $this->resolveTarget($input->getArgument('target')); $output->page($this->presenter->present($target, $depth, $input->getOption('all') ? Presenter::VERBOSE : 0)); if (is_object($target)) { $this->setCommandScopeVariables(new \ReflectionObject($target)); } } /** * Resolve dump target name. * * @throws RuntimeException if target name does not exist in the current scope * * @param string $target * * @return mixed */ protected function resolveTarget($target) { $matches = array(); if (preg_match(self::SUPERGLOBAL, $target, $matches)) { if (!array_key_exists($matches[1], $GLOBALS)) { throw new RuntimeException('Unknown target: ' . $target); } return $GLOBALS[$matches[1]]; } elseif (preg_match(self::INSTANCE, $target, $matches)) { return $this->getScopeVariable($matches[1]); } else { throw new RuntimeException('Unknown target: ' . $target); } } }