private function prepareMiddleware($middleware, ContainerInterface $container = null, $forError = false)
{
if (is_callable($middleware)) {
return $middleware;
}
if (is_array($middleware)) {
return $this->marshalMiddlewarePipe($middleware, $container, $forError);
}
if (is_string($middleware) && $container && $container->has($middleware)) {
$method = $forError ? 'marshalLazyErrorMiddlewareService' : 'marshalLazyMiddlewareService';
return $this->{$method}($middleware, $container);
}
$callable = $middleware;
if (is_string($middleware)) {
$callable = $this->marshalInvokableMiddleware($middleware);
}
if (!is_callable($callable)) {
throw new Exception\InvalidMiddlewareException(sprintf('Unable to resolve middleware "%s" to a callable', is_object($middleware) ? get_class($middleware) . "[Object]" : gettype($middleware) . '[Scalar]'));
}
return $callable;
}