Source of file DefinitionList.php
Size: 6,719 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Di/DefinitionList.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 | <?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; use SplDoublyLinkedList; /** * Class definition based on multiple definitions */ class DefinitionList extends SplDoublyLinkedList implements Definition\DefinitionInterface { /** * @param Definition\DefinitionInterface|Definition\DefinitionInterface[] $definitions */ public function __construct($definitions) { if (!is_array($definitions)) { $definitions = array($definitions); } foreach ($definitions as $definition) { $this->push($definition); } } /** * Add definitions * * @param Definition\DefinitionInterface $definition * @param bool $addToBackOfList * @return void */ public function addDefinition(Definition\DefinitionInterface $definition, $addToBackOfList = true) { if ($addToBackOfList) { $this->push($definition); } else { $this->unshift($definition); } } /** * @param string $type * @return Definition\DefinitionInterface[] */ public function getDefinitionsByType($type) { $definitions = array(); foreach ($this as $definition) { if ($definition instanceof $type) { $definitions[] = $definition; } } return $definitions; } /** * Get definition by type * * @param string $type * @return Definition\DefinitionInterface */ public function getDefinitionByType($type) { foreach ($this as $definition) { if ($definition instanceof $type) { return $definition; } } return false; } /** * @param string $class * @return bool|Definition\DefinitionInterface */ public function getDefinitionForClass($class) { /** @var $definition Definition\DefinitionInterface */ foreach ($this as $definition) { if ($definition->hasClass($class)) { return $definition; } } return false; } /** * @param string $class * @return bool|Definition\DefinitionInterface */ public function forClass($class) { return $this->getDefinitionForClass($class); } /** * {@inheritDoc} */ public function getClasses() { $classes = array(); /** @var $definition Definition\DefinitionInterface */ foreach ($this as $definition) { $classes = array_merge($classes, $definition->getClasses()); } return $classes; } /** * {@inheritDoc} */ public function hasClass($class) { /** @var $definition Definition\DefinitionInterface */ foreach ($this as $definition) { if ($definition->hasClass($class)) { return true; } } return false; } /** * {@inheritDoc} */ public function getClassSupertypes($class) { $supertypes = array(); /** @var $definition Definition\DefinitionInterface */ foreach ($this as $definition) { if ($definition->hasClass($class)) { $supertypes = array_merge($supertypes, $definition->getClassSupertypes($class)); if ($definition instanceof Definition\PartialMarker) { continue; } return $supertypes; } } return $supertypes; } /** * {@inheritDoc} */ public function getInstantiator($class) { /** @var $definition Definition\DefinitionInterface */ foreach ($this as $definition) { if ($definition->hasClass($class)) { $value = $definition->getInstantiator($class); if ($value === null && $definition instanceof Definition\PartialMarker) { continue; } return $value; } } return false; } /** * {@inheritDoc} */ public function hasMethods($class) { /** @var $definition Definition\DefinitionInterface */ foreach ($this as $definition) { if ($definition->hasClass($class)) { if ($definition->hasMethods($class) === false && $definition instanceof Definition\PartialMarker) { continue; } return $definition->hasMethods($class); } } return false; } /** * {@inheritDoc} */ public function hasMethod($class, $method) { if (!$this->hasMethods($class)) { return false; } /** @var $definition Definition\DefinitionInterface */ foreach ($this as $definition) { if ($definition->hasClass($class) && $definition->hasMethod($class, $method)) { return true; } } return false; } /** * {@inheritDoc} */ public function getMethods($class) { /** @var $definition Definition\DefinitionInterface */ $methods = array(); foreach ($this as $definition) { if ($definition->hasClass($class)) { if (!$definition instanceof Definition\PartialMarker) { return array_merge($definition->getMethods($class), $methods); } $methods = array_merge($definition->getMethods($class), $methods); } } return $methods; } /** * {@inheritDoc} */ public function hasMethodParameters($class, $method) { $methodParameters = $this->getMethodParameters($class, $method); return ($methodParameters !== array()); } /** * {@inheritDoc} */ public function getMethodParameters($class, $method) { /** @var $definition Definition\DefinitionInterface */ foreach ($this as $definition) { if ($definition->hasClass($class) && $definition->hasMethod($class, $method) && $definition->hasMethodParameters($class, $method)) { return $definition->getMethodParameters($class, $method); } } return array(); } } |