Source of file Console.php
Size: 5,330 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Di/Display/Console.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Di\Display; use Zend\Di\Di; /** * Exporter for class definitions */ class Console { /** * @var Di */ protected $di = null; /** * @var string[] */ protected $runtimeClasses = array(); /** * Export * * @param Di $di * @param array $runtimeClasses * @return void */ public static function export(Di $di, array $runtimeClasses = array()) { $console = new static($di); $console->addRuntimeClasses($runtimeClasses); $console->render($di); } /** * Constructor * * @param null|Di $di */ public function __construct(Di $di = null) { $this->di = ($di) ?: new Di; } /** * @param string[] $runtimeClasses */ public function addRuntimeClasses(array $runtimeClasses) { foreach ($runtimeClasses as $runtimeClass) { $this->addRuntimeClass($runtimeClass); } } /** * @param string $runtimeClass */ public function addRuntimeClass($runtimeClass) { $this->runtimeClasses[] = $runtimeClass; } public function render() { $knownClasses = array(); echo 'Definitions' . PHP_EOL . PHP_EOL; foreach ($this->di->definitions() as $definition) { $this->renderDefinition($definition); foreach ($definition->getClasses() as $class) { $knownClasses[] = $class; $this->renderClassDefinition($definition, $class); } if (count($definition->getClasses()) == 0) { echo PHP_EOL .' No Classes Found' . PHP_EOL . PHP_EOL; } } if ($this->runtimeClasses) echo ' Runtime classes:' . PHP_EOL; $unknownRuntimeClasses = array_diff($this->runtimeClasses, $knownClasses); foreach ($unknownRuntimeClasses as $runtimeClass) { $definition = $this->di->definitions()->getDefinitionForClass($runtimeClass); $this->renderClassDefinition($definition, $runtimeClass); } echo PHP_EOL . 'Instance Configuration Info:' . PHP_EOL; echo PHP_EOL . ' Aliases:' . PHP_EOL; $configuredTypes = array(); foreach ($this->di->instanceManager()->getAliases() as $alias => $class) { echo ' ' . $alias . ' [type: ' . $class . ']' . PHP_EOL; $configuredTypes[] = $alias; } echo PHP_EOL . ' Classes:' . PHP_EOL; foreach ($this->di->instanceManager()->getClasses() as $class) { echo ' ' . $class . PHP_EOL; $configuredTypes[] = $class; } echo PHP_EOL . ' Configurations:' . PHP_EOL; foreach ($configuredTypes as $type) { $info = $this->di->instanceManager()->getConfig($type); echo ' ' . $type . PHP_EOL; if ($info['parameters']) { echo ' parameters:' . PHP_EOL; foreach ($info['parameters'] as $param => $value) { echo ' ' . $param . ' = ' . $value . PHP_EOL; } } if ($info['injections']) { echo ' injections:' . PHP_EOL; foreach ($info['injections'] as $injection => $value) { var_dump($injection, $value); } } } } /** * @param object $definition */ protected function renderDefinition($definition) { echo ' Definition Type: ' . get_class($definition) . PHP_EOL; $r = new \ReflectionClass($definition); foreach ($r->getProperties(\ReflectionProperty::IS_PUBLIC | \ReflectionProperty::IS_PROTECTED) as $property) { $property->setAccessible(true); echo ' internal property: ' . $property->getName(); $value = $property->getValue($definition); if (is_object($value)) { echo ' instance of ' . get_class($value); } else { echo ' = ' . $value; } echo PHP_EOL; } } /** * @param \Zend\Di\Definition\DefinitionInterface $definition * @param string $class */ protected function renderClassDefinition($definition, $class) { echo PHP_EOL . ' Parameters For Class: ' . $class . PHP_EOL; foreach ($definition->getMethods($class) as $methodName => $methodIsRequired) { foreach ($definition->getMethodParameters($class, $methodName) as $fqName => $pData) { echo ' ' . $pData[0] . ' [type: '; echo ($pData[1]) ? $pData[1] : 'scalar'; echo ($pData[2] === true && $methodIsRequired) ? ', required' : ', not required'; echo ', injection-method: ' . $methodName; echo ' fq-name: ' . $fqName; echo ']' . PHP_EOL; } } echo PHP_EOL; } } |