/** * @param IDefinition $definition * @param $id * @param $args * * @return mixed|null * @throws TypeMismatchException */ public function getWildcard(IDefinition $definition, $id, $args) { $abstract = $definition->getValue(); $args['abstract'] = $id; $instance = $this->resolveAbstract($abstract, $args); $this->matchClassType($id, $instance); return $instance; }
/** * @param IDefinition $definition * @param $id * @param $value */ protected function processSingletonDefinition(IDefinition $definition, $id, $value) { if ($definition->isSingleton() && !$definition instanceof ValueDefinition) { $newDefinition = new ValueDefinition($id, $value); $this->registry->addDefinition($newDefinition); foreach ($definition->getAliases() as $alias) { $alias->setValue($newDefinition); } } }
/** * @param IDefinition $definition */ public function addDefinition(IDefinition $definition) { $this->removeDefinition($definition->getId()); array_unshift($this->definitions, $definition); }