/** {@inheritdoc} */
 public function resolve(DependencyDefinition $dependencyDefinition)
 {
     $dependency = $dependencyDefinition->getDependency();
     if (!is_object($dependency)) {
         throw new InvalidDependencyResolverResultTypeException($dependency);
     }
     $this->injectDependencies($dependency, $dependencyDefinition);
     return $dependency;
 }
 /** {@inheritdoc} */
 public function resolve(DependencyDefinition $dependencyDefinition)
 {
     $dependencyClosure = $dependencyDefinition->getDependency();
     if (!$dependencyClosure instanceof \Closure) {
         throw new InvalidDependencyTypeException($dependencyClosure);
     }
     $dependency = call_user_func_array($dependencyClosure, [$this->getDIContainer(), $this->collectArguments($dependencyDefinition->getArgumentsContainer())]);
     if (!is_object($dependency)) {
         throw new InvalidDependencyResolverResultTypeException($dependency);
     }
     $this->injectDependencies($dependency, $dependencyDefinition);
     return $dependency;
 }
 /** {@inheritdoc} */
 public function resolve(DependencyDefinition $dependencyDefinition)
 {
     $dependencyCallable = $dependencyDefinition->getDependency();
     if (!is_callable($dependencyCallable)) {
         throw new InvalidDependencyTypeException($dependencyCallable);
     }
     $dependency = call_user_func($dependencyCallable, $this->getDIContainer());
     if (!is_object($dependency)) {
         throw new InvalidDependencyResolverResultTypeException($dependency);
     }
     $this->injectDependencies($dependency, $dependencyDefinition);
     return $dependency;
 }
 /** {@inheritdoc} */
 public function resolve(DependencyDefinition $dependencyDefinition)
 {
     $dependencyClassName = (string) $dependencyDefinition->getDependency();
     if (!class_exists($dependencyClassName)) {
         throw new DependencyClassUnknownException($dependencyClassName);
     }
     $injectionsContainer = $dependencyDefinition->getInjectionsContainer();
     $reflectionClass = new \ReflectionClass($dependencyClassName);
     if ($injectionDefinition = $injectionsContainer->getByTarget(InjectionDefinition::TARGET_CONSTRUCTOR)) {
         $arguments = $this->collectArguments($injectionDefinition[0]->getArgumentsContainer());
         $dependency = $reflectionClass->newInstanceArgs($arguments);
     } else {
         $dependency = $reflectionClass->newInstance();
     }
     $this->injectDependencies($dependency, $dependencyDefinition);
     return $dependency;
 }
 /**
  * @covers Brickoo\Component\IoC\Definition\DependencyDefinition::__construct
  * @covers Brickoo\Component\IoC\Definition\DependencyDefinition::getDependency
  * @covers Brickoo\Component\IoC\Definition\DependencyDefinition::setDependency
  */
 public function testDefinitionScope()
 {
     $dependency = "@MyDependency";
     $annotationDefinition = new DependencyDefinition($dependency);
     $this->assertEquals($dependency, $annotationDefinition->getDependency());
 }
Exemplo n.º 6
0
 /**
  * Resolves a dependency definition.
  * @param \Brickoo\Component\IoC\DIContainer $container
  * @param \Brickoo\Component\IoC\Definition\DependencyDefinition
  * @throws \Brickoo\Component\IoC\Resolver\Exception\DefinitionTypeUnknownException
  * @return mixed the resolved definition result
  */
 public function resolve(DIContainer $container, DependencyDefinition $dependencyDefinition)
 {
     $dependency = $dependencyDefinition->getDependency();
     return $this->getResolver($this->getResolverType($dependency), $container)->resolve($dependencyDefinition);
 }