/** * @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; }
/** {@inheritdoc} */ public function resolve(DependencyDefinition $dependencyDefinition) { $dependency = new Dependency(); $dependency->arguments = $this->collectArguments($dependencyDefinition->getArgumentsContainer()); $this->injectDependencies($dependency, $dependencyDefinition); return $dependency; }