/** * {@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); }