summaryrefslogtreecommitdiff
path: root/src/Contracts/Strategy.php
blob: 7dea4597ee92b759f18dbc44a45e0e459210c71e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

declare(strict_types=1);

namespace Lightscale\Router\Contracts;

use Lightscale\Router\RouteCall;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;

interface Strategy
{
    /**
     * @param Middleware[] $middlewares
     * @param callable(RequestInterface): ResponseInterface $handler
     */
    public function runMiddleware(
        RequestInterface $request,
        array $middlewares,
        callable $handler,
    ): ResponseInterface;

    public function runRoute(RouteCall $call): ResponseInterface;

    public function notFound(RequestInterface $request): ResponseInterface;
}