/**
  * @covers Brickoo\Component\IoC\Definition\DependencyDefinition::getScope
  * @covers Brickoo\Component\IoC\Definition\DependencyDefinition::getArgumentsContainer
  * @covers Brickoo\Component\IoC\Definition\DependencyDefinition::getInjectionsContainer
  */
 public function testDefinitionGetterMethods()
 {
     $scope = DependencyDefinition::SCOPE_SINGLETON;
     $argumentContainer = $this->getMock("\\Brickoo\\Component\\IoC\\Definition\\Container\\ArgumentDefinitionContainer");
     $injectionContainer = $this->getMock("\\Brickoo\\Component\\IoC\\Definition\\Container\\InjectionDefinitionContainer");
     $annotationDefinition = new DependencyDefinition("@MyDependency", $scope, $argumentContainer, $injectionContainer);
     $this->assertEquals($scope, $annotationDefinition->getScope());
     $this->assertSame($argumentContainer, $annotationDefinition->getArgumentsContainer());
     $this->assertSame($injectionContainer, $annotationDefinition->getInjectionsContainer());
 }
 /** {@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;
 }
Пример #3
0
 /** {@inheritdoc} */
 public function resolve(DependencyDefinition $dependencyDefinition)
 {
     $dependency = new Dependency();
     $dependency->arguments = $this->collectArguments($dependencyDefinition->getArgumentsContainer());
     $this->injectDependencies($dependency, $dependencyDefinition);
     return $dependency;
 }