/** * @dataProvider providerAddDependencyThrowsExceptionWhenInvalidForProvided * @expectedException zibo\ZiboException */ public function testAddDependencyThrowsExceptionWhenInvalidForProvided($for) { $container = new DependencyContainer(); $container->addDependency($for, new Dependency('className')); }
public function testGetAll() { $interface = 'zibo\\core\\di\\TestInterface'; $token1 = 'test1'; $token2 = 'test2'; $id = 'id'; $construct1 = new DependencyCall('__construct'); $construct1->addArgument(new DependencyCallArgument('value', $token1)); $construct2 = new DependencyCall('__construct'); $construct2->addArgument(new DependencyCallArgument('value', $token2)); $dependency1 = new Dependency('zibo\\core\\di\\TestObject', $id); $dependency1->addCall($construct1); $dependency2 = new Dependency('zibo\\core\\di\\TestObject'); $dependency2->addCall($construct2); $container = new DependencyContainer(); $container->addDependency($interface, $dependency1); $container->addDependency($interface, $dependency2); $this->di->setContainer($container); $expected = array($id => new TestObject($token1), 0 => new TestObject($token2)); $result = $this->di->getAll($interface); $this->assertEquals($expected, $result); }
/** * Reads the dependencies from the provided file and adds them to the * provided container * @param zibo\core\di\DependencyContainer $container * @param zibo\library\filesystem\File $file * @return null */ private function readDependencies(DependencyContainer $container, File $file) { $dom = new Document(); $dom->load($file); $dependencyElements = $dom->getElementsByTagName(self::TAG_DEPENDENCY); foreach ($dependencyElements as $dependencyElement) { $interface = $dependencyElement->getAttribute(self::ATTRIBUTE_INTERFACE); $className = $dependencyElement->getAttribute(self::ATTRIBUTE_CLASS); $id = $dependencyElement->getAttribute(self::ATTRIBUTE_ID); if (!$id) { $id = null; } $dependency = new Dependency($className, $id); $this->readCalls($dependency, $dependencyElement); $container->addDependency($interface, $dependency); } }