Final Class Yiisoft\Queue\Middleware\Push\PushMiddlewareFactory
| Inheritance | Yiisoft\ |
|---|---|
| Implements | Yiisoft\ |
Creates a middleware based on the definition provided.
Protected Properties
| Property | Type | Description | Defined By |
|---|---|---|---|
| $container | \ |
Yiisoft\ |
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\ |
|
| createPushMiddleware() | Yiisoft\ |
Protected Methods
Method Details
| public mixed __construct ( \ | ||
| $container | \ |
Container used to resolve middleware. |
| $callableDependencyContainer | \ |
Container used to resolve callable middleware dependencies. If not set, the main container is used. |
public function __construct(
protected readonly ContainerInterface $container,
?ContainerInterface $callableDependencyContainer = null,
) {
$this->callableFactory = new CallableFactory($container, $callableDependencyContainer);
}
| protected \ | ||
| $definition | callable|array|string |
Middleware definition in one of the following formats: |
| return | \ |
Middleware instance |
|---|---|---|
| throws | Yiisoft\ |
|
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\ | ||
| $middlewareDefinition | mixed |
Middleware definition in one of the following formats:
For handler action and callable
typed parameters are automatically injected using dependency injection container.
Current message and handler could be obtained by type-hinting for {@see \ |
| throws | Yiisoft\ |
|
|---|---|---|
public function createPushMiddleware(mixed $middlewareDefinition): PushMiddlewareInterface
{
if ($middlewareDefinition instanceof PushMiddlewareInterface) {
return $middlewareDefinition;
}
if (!is_callable($middlewareDefinition) && !is_array($middlewareDefinition) && !is_string($middlewareDefinition)) {
throw new InvalidMiddlewareDefinitionException($middlewareDefinition);
}
$middleware = $this->create($middlewareDefinition);
if (!$middleware instanceof PushMiddlewareInterface) {
throw new InvalidMiddlewareDefinitionException($middlewareDefinition);
}
return $middleware;
}
| protected string getInterfaceName ( ) |
protected function getInterfaceName(): string
{
return PushMiddlewareInterface::class;
}
| protected Yiisoft\ | ||
| $callback | callable | |
protected function wrapMiddleware(callable $callback): PushMiddlewareInterface
{
return new class ($callback) implements PushMiddlewareInterface {
private $callback;
public function __construct(callable $callback)
{
$this->callback = $callback;
}
public function processPush(MessageInterface $message, PushHandlerInterface $handler): MessageInterface
{
$response = ($this->callback)($message, $handler);
if ($response instanceof MessageInterface) {
return $response;
}
if ($response instanceof PushMiddlewareInterface) {
return $response->processPush($message, $handler);
}
throw new InvalidMiddlewareDefinitionException($this->callback);
}
};
}
User Contributed Notes
Leave a comment
Join the conversation to share a note.