public function testInvokeWithInvalidMethodCallsArguments() { $this->object = new ClassDefinition('Fwk\\Di\\Reference'); $this->object->addArgument('testRef'); $this->object->addMethodCall('setName', array('@invalid_ref')); $this->setExpectedException('\\Fwk\\Di\\Exceptions\\InvalidCallableDefinitionException'); $this->object->invoke($this->getContainer()); }
/** * Instanciates $this->className and return the instance. * * @param Container $container The Di Container * @param null|string $name Name of the current definition (if any) * * @return VirtualProxyInterface * @throws Exceptions\InvalidClassDefinitionException */ public function invoke(Container $container, $name = null) { $proxy = $this->getProxyFactory()->createProxy($container->propertizeString($this->className), function (&$wrappedInstance, LazyLoadingInterface $proxy) use($container, $name) { $wrappedInstance = parent::invoke($container, $name); $proxy->setProxyInitializer(null); return true; }); return $proxy; }
public function testSharedSetAndGetDefinition() { $this->assertFalse($this->object->has('test')); $def = ClassDefinition::factory('stdClass'); $this->object->set('test', $def->setShared(true)); $this->assertTrue($this->object->has('test')); $inst = $this->object->get('test'); $this->assertInstanceOf('\\stdClass', $inst); $this->assertTrue($inst === $this->object->get('test')); }
/** * Converts XML definitions from parsing results * * @param array $listeners Parsing results * @param Container $container The Di Container * * @return void */ protected function applyListeners(array $listeners, Container $container) { foreach ($listeners as $infos) { $class = $infos['class']; $service = $infos['service']; if (empty($class) && empty($service)) { throw new Exception('Invalid Xml Listener: either "class" or "service" attribute must be defined.'); } if (!empty($class)) { $def = new ClassDefinition($class); $container->addListener($def->invoke($container)); continue; } if (!$container->has($service)) { throw new Exception(sprintf('Invalid Xml Listener service ID: "%s"', $service)); } $container->addListener($container->get($service)); } }
public function testLazyClassLoading() { $class = $this->object->invoke($this->getContainer()); $this->assertArrayHasKey('ProxyManager\\Proxy\\LazyLoadingInterface', class_implements($class)); }