0 follower

Final Class Yiisoft\Queue\Middleware\Push\PushMiddlewareDispatcher

InheritanceYiisoft\Queue\Middleware\Push\PushMiddlewareDispatcher

Method Details

Hide inherited methods

__construct() public method

public mixed __construct ( Yiisoft\Queue\Middleware\Push\MiddlewareFactoryPushInterface $middlewareFactory, array|callable|string|Yiisoft\Queue\Middleware\Push\MiddlewarePushInterface $middlewareDefinitions )
$middlewareFactory Yiisoft\Queue\Middleware\Push\MiddlewareFactoryPushInterface
$middlewareDefinitions array|callable|string|Yiisoft\Queue\Middleware\Push\MiddlewarePushInterface

                public function __construct(
    private readonly MiddlewareFactoryPushInterface $middlewareFactory,
    array|callable|string|MiddlewarePushInterface ...$middlewareDefinitions,
) {
    $this->middlewareDefinitions = array_reverse($middlewareDefinitions);
}

            
dispatch() public method

Dispatch request through middleware to get response.

public Yiisoft\Queue\Middleware\Push\PushRequest dispatch ( Yiisoft\Queue\Middleware\Push\PushRequest $request, Yiisoft\Queue\Middleware\Push\MessageHandlerPushInterface $finishHandler )
$request Yiisoft\Queue\Middleware\Push\PushRequest

Request to pass to middleware.

$finishHandler Yiisoft\Queue\Middleware\Push\MessageHandlerPushInterface

Handler to use in case no middleware produced a response.

                public function dispatch(
    PushRequest $request,
    MessageHandlerPushInterface $finishHandler
): PushRequest {
    if ($this->stack === null) {
        $this->stack = new MiddlewarePushStack($this->buildMiddlewares(), $finishHandler);
    }
    return $this->stack->handlePush($request);
}

            
hasMiddlewares() public method

public boolean hasMiddlewares ( )
return boolean

Whether there are middleware defined in the dispatcher.

                public function hasMiddlewares(): bool
{
    return $this->middlewareDefinitions !== [];
}

            
withMiddlewares() public method

Returns new instance with middleware handlers replaced with the ones provided.

The last specified handler will be executed first.

public self withMiddlewares ( array[]|callable[]|Yiisoft\Queue\Middleware\Push\MiddlewarePushInterface[]|string[] $middlewareDefinitions )
$middlewareDefinitions array[]|callable[]|Yiisoft\Queue\Middleware\Push\MiddlewarePushInterface[]|string[]

Each array element is:

  • A name of a middleware class. The middleware instance will be obtained from container executed.
  • A callable with function(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface signature.
  • A "callable-like" array in format [FooMiddleware::class, 'index']. FooMiddleware instance will be created and index() method will be executed.
  • A function returning a middleware. The middleware returned will be executed.

For callables typed parameters are automatically injected using dependency injection container.

return self

New instance of the {@see \Yiisoft\Queue\Middleware\Push\PushMiddlewareDispatcher}

                public function withMiddlewares(array $middlewareDefinitions): self
{
    $instance = clone $this;
    $instance->middlewareDefinitions = array_reverse($middlewareDefinitions);
    // Fixes a memory leak.
    unset($instance->stack);
    $instance->stack = null;
    return $instance;
}