Final Class Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareFactory
| Inheritance | Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareFactory » Yiisoft\Queue\Middleware\MiddlewareFactory |
|---|---|
| Implements | Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareFactoryInterface |
Creates a middleware based on the definition provided.
Protected Properties
| Property | Type | Description | Defined By |
|---|---|---|---|
| $container | \Psr\Container\ContainerInterface | Yiisoft\Queue\Middleware\MiddlewareFactory |
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\Queue\Middleware\MiddlewareFactory | |
| createConsumeMiddleware() | Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareFactory |
Protected Methods
Method Details
| public mixed __construct ( \Psr\Container\ContainerInterface $container, Yiisoft\Queue\Middleware\CallableFactory $callableFactory ) | ||
| $container | \Psr\Container\ContainerInterface | |
| $callableFactory | Yiisoft\Queue\Middleware\CallableFactory | |
public function __construct(
protected readonly ContainerInterface $container,
private readonly CallableFactory $callableFactory,
) {}
| protected \Yiisoft\Queue\Middleware\T create ( callable|array|string $definition ) | ||
| $definition | callable|array|string |
Middleware definition in one of the following formats: |
| return | \Yiisoft\Queue\Middleware\T |
Middleware instance |
|---|---|---|
| throws | Yiisoft\Queue\Middleware\InvalidMiddlewareDefinitionException | |
protected function create(callable|array|string $definition): object
{
try {
$callable = $this->callableFactory->create($definition);
return $this->wrapMiddleware($callable);
} catch (InvalidCallableConfigurationException) {
// Not a callable, try internal checks
}
if (is_string($definition)) {
return $this->getFromContainer($definition);
}
if (is_array($definition)) {
return $this->tryGetFromArrayDefinition($definition)
?? throw new InvalidMiddlewareDefinitionException($definition);
}
throw new InvalidMiddlewareDefinitionException($definition);
}
| public Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareInterface createConsumeMiddleware ( Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareInterface|callable|array|string $middlewareDefinition ) | ||
| $middlewareDefinition | Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareInterface|callable|array|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 \Yiisoft\Queue\Middleware\Consume\ServerRequestInterface} and {@see \Yiisoft\Queue\Middleware\Consume\RequestHandlerInterface}. |
| throws | Yiisoft\Queue\Middleware\InvalidMiddlewareDefinitionException | |
|---|---|---|
public function createConsumeMiddleware(
ConsumeMiddlewareInterface|callable|array|string $middlewareDefinition,
): ConsumeMiddlewareInterface {
if ($middlewareDefinition instanceof ConsumeMiddlewareInterface) {
return $middlewareDefinition;
}
$middleware = $this->create($middlewareDefinition);
if (!$middleware instanceof ConsumeMiddlewareInterface) {
throw new InvalidMiddlewareDefinitionException($middlewareDefinition);
}
return $middleware;
}
| protected string getInterfaceName ( ) |
protected function getInterfaceName(): string
{
return ConsumeMiddlewareInterface::class;
}
| protected Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareInterface wrapMiddleware ( callable $callback ) | ||
| $callback | callable | |
protected function wrapMiddleware(callable $callback): ConsumeMiddlewareInterface
{
$container = $this->container;
return new class ($callback, $container) implements ConsumeMiddlewareInterface {
private $callback;
public function __construct(
callable $callback,
private readonly ContainerInterface $container,
) {
$this->callback = $callback;
}
public function processConsume(ConsumeRequest $request, ConsumeHandlerInterface $handler): ConsumeRequest
{
$response = (new Injector($this->container))->invoke($this->callback, [$request, $handler]);
if ($response instanceof ConsumeRequest) {
return $response;
}
if ($response instanceof ConsumeMiddlewareInterface) {
return $response->processConsume($request, $handler);
}
throw new InvalidMiddlewareDefinitionException($this->callback);
}
};
}
Signup or Login in order to comment.