コード例 #1
0
ファイル: Factory.php プロジェクト: autarky/container
 /**
  * {@inheritdoc}
  */
 public function invoke(ContainerInterface $container, array $params = array())
 {
     $params = array_replace($this->params, $params);
     $callable = $this->definition->getCallable();
     if (is_array($callable) && is_string($callable[0])) {
         $callable[0] = $container->resolve($callable[0]);
     }
     $args = [];
     foreach ($this->definition->getArguments() as $arg) {
         if ($arg->isClass()) {
             $resolvedArg = $this->resolveClassArg($container, $arg, $params);
         } else {
             $resolvedArg = $this->resolveScalarArg($container, $arg, $params);
         }
         if ($resolvedArg instanceof FactoryInterface) {
             $resolvedArg = $resolvedArg->invoke($container);
         }
         $args[$arg->getPosition()] = $resolvedArg;
     }
     return call_user_func_array($callable, $args);
 }