Example #1
0
 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());
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 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'));
 }
Example #4
0
 /**
  * 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));
     }
 }
Example #5
0
 public function testLazyClassLoading()
 {
     $class = $this->object->invoke($this->getContainer());
     $this->assertArrayHasKey('ProxyManager\\Proxy\\LazyLoadingInterface', class_implements($class));
 }