function testDecoratingComponentAdapterGetDelagate()
 {
     $ca_decorated = new ConstructorInjectionComponentAdapter('Boy');
     $ca_decorating = new DecoratingComponentAdapter($ca_decorated);
     if ($ca_decorating->getDelegate() !== $ca_decorated) {
         $this->fail();
     } else {
         $this->pass();
     }
 }
 /**
  * Get shared instance.
  * If shared instance is null, the decorated Adapter provides
  * object instance.
  *
  * @param IDependencyInjectionContainer $container
  * @return mixed
  */
 public function getInstance(IDependencyInjectionContainer $container)
 {
     if (is_null($this->sharedInstance)) {
         $this->sharedInstance = parent::getInstance($container);
     }
     return $this->sharedInstance;
 }
 /**
  * Get instance of decorated adapter instantiation.
  * Apply methods on object instance.
  *
  * @param IDependencyInjectionContainer $container
  * @return mixed The object instance
  */
 public function getInstance(IDependencyInjectionContainer $container)
 {
     $instance = parent::getInstance($container);
     foreach ($this->getMethods() as $method) {
         list($methodName, $arguments) = $method;
         $methodReflection = new ReflectionMethod($instance, $methodName);
         if (count($arguments)) {
             $resolved = $this->resolveArguments($container, $arguments);
             call_user_func_array(array($instance, $methodName), $resolved);
         } else {
             if ($methodReflection && $methodReflection->getParameters()) {
                 $argsToPass = $this->getArgumentsOfMethod($container, $methodReflection);
                 call_user_func_array(array($instance, $methodName), $argsToPass);
             } else {
                 call_user_func(array($instance, $methodName));
             }
         }
     }
     return $instance;
 }
예제 #4
0
 public function getComponentInstance(PicoContainer $container)
 {
     require_once $this->includeFileName;
     if (class_exists($this->getDelegate()->getComponentImplementation())) {
         return parent::getComponentInstance($container);
     } else {
         throw new LazyIncludedClassNotDefinedException($this->getDelegate()->getComponentImplementation());
     }
 }