/** * Get an object instance from the defined callback * * @param callback $callback * @param array $params * @param string $alias * @return object * @throws Exception\InvalidCallbackException */ protected function createInstanceViaCallback($callback, $params, $alias) { if (!is_callable($callback)) { throw new Exception\InvalidCallbackException('An invalid constructor callback was provided'); } if (is_array($callback)) { $class = is_object($callback[0]) ? get_class($callback[0]) : $callback[0]; $method = $callback[1]; } $callParameters = array(); if ($this->definition->hasInjectionMethod($class, $method)) { $callParameters = $this->resolveMethodParameters($class, $method, $params, true, $alias); } return call_user_func_array($callback, $callParameters); }