Final Class Yiisoft\Middleware\Dispatcher\MiddlewareFactory
| Inheritance | Yiisoft\Middleware\Dispatcher\MiddlewareFactory |
|---|
Creates a PSR-15 middleware based on the definition provided.
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\Middleware\Dispatcher\MiddlewareFactory | |
| create() | Yiisoft\Middleware\Dispatcher\MiddlewareFactory |
Method Details
| public mixed __construct ( \Psr\Container\ContainerInterface $container, Yiisoft\Middleware\Dispatcher\ParametersResolverInterface|null $parametersResolver = null ) | ||
| $container | \Psr\Container\ContainerInterface |
Container to use for resolving definitions. |
| $parametersResolver | Yiisoft\Middleware\Dispatcher\ParametersResolverInterface|null | |
public function __construct(
private readonly ContainerInterface $container,
private readonly ?ParametersResolverInterface $parametersResolver = null
) {
}
| public \Psr\Http\Server\MiddlewareInterface create ( array|callable|string $middlewareDefinition ) | ||
| $middlewareDefinition | array|callable|string |
Middleware definition in one of the following formats:
For handler action and callable typed parameters are automatically injected using dependency injection container. Current request and handler could be obtained by type-hinting for {@see \Psr\Http\Message\ServerRequestInterface} and {@see \Psr\Http\Server\RequestHandlerInterface}. |
| throws | Yiisoft\Middleware\Dispatcher\InvalidMiddlewareDefinitionException | |
|---|---|---|
public function create(array|callable|string $middlewareDefinition): MiddlewareInterface
{
if ($this->isMiddlewareClassDefinition($middlewareDefinition)) {
/** @var MiddlewareInterface */
return $this->container->get($middlewareDefinition);
}
if ($this->isRequestHandlerClassDefinition($middlewareDefinition)) {
return $this->wrapCallable([$middlewareDefinition, 'handle']);
}
if ($this->isInvokableClassDefinition($middlewareDefinition)) {
return $this->wrapCallable([$middlewareDefinition, '__invoke']);
}
if ($this->isCallableDefinition($middlewareDefinition)) {
return $this->wrapCallable($middlewareDefinition);
}
if ($this->isArrayDefinition($middlewareDefinition)) {
/**
* @var MiddlewareInterface
*
* @psalm-suppress InvalidArgument Need for Psalm version 4.* only.
*/
return ArrayDefinition::fromConfig($middlewareDefinition)->resolve($this->container);
}
if ($this->isContainerAlias($middlewareDefinition)) {
/** @var mixed $resolvedDefinition */
$resolvedDefinition = $this->container->get($middlewareDefinition);
if ($resolvedDefinition instanceof MiddlewareInterface) {
return $resolvedDefinition;
}
}
throw new InvalidMiddlewareDefinitionException($middlewareDefinition);
}
Signup or Login in order to comment.