81 lines
2.9 KiB
PHP
81 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace WellRESTed\Routing;
|
|
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
use WellRESTed\MiddlewareInterface;
|
|
|
|
/**
|
|
* Maps HTTP methods and paths to middleware
|
|
*/
|
|
interface RouterInterface extends MiddlewareInterface
|
|
{
|
|
/**
|
|
* Evaluate $request's path and method and dispatches matching middleware.
|
|
*
|
|
* Implementations MUST pass $request, $response, and $next to the matching
|
|
* middleware.
|
|
*
|
|
* @param ServerRequestInterface $request
|
|
* @param ResponseInterface $response
|
|
* @param callable $next
|
|
* @return ResponseInterface
|
|
*/
|
|
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, $next);
|
|
|
|
/**
|
|
* Register handlers and middleware with the router for a given path and
|
|
* method.
|
|
*
|
|
* $method may be:
|
|
* - A single verb ("GET"),
|
|
* - A comma-separated list of verbs ("GET,PUT,DELETE")
|
|
* - "*" to indicate any method.
|
|
*
|
|
* $target may be:
|
|
* - An exact path (e.g., "/path/")
|
|
* - A prefix path ending with "*"" ("/path/*"")
|
|
* - A URI template with variables enclosed in "{}" ("/path/{id}")
|
|
* - A regular expression ("~/cat/([0-9]+)~")
|
|
*
|
|
* $dispatchable may be:
|
|
* - An instance implementing one of these interfaces:
|
|
* - Psr\Http\Server\RequestHandlerInterface
|
|
* - Psr\Http\Server\MiddlewareInterface
|
|
* - WellRESTed\MiddlewareInterface
|
|
* - Psr\Http\Message\ResponseInterface
|
|
* - A string containing the fully qualified class name of a class
|
|
* implementing one of the interfaces listed above.
|
|
* - A callable that returns an instance implementing one of the
|
|
* interfaces listed above.
|
|
* - A callable with a signature matching the signature of
|
|
* WellRESTed\MiddlewareInterface::__invoke
|
|
* - An array containing any of the items in this list.
|
|
* @see DispatchedInterface::dispatch
|
|
*
|
|
* @param string $target Request target or pattern to match
|
|
* @param string $method HTTP method(s) to match
|
|
* @param mixed $dispatchable Middleware to dispatch
|
|
* @return static
|
|
*/
|
|
public function register($method, $target, $dispatchable);
|
|
|
|
/**
|
|
* Push a new middleware onto the stack. Middleware for a router runs only
|
|
* when the router has a route matching the request.
|
|
*
|
|
* $middleware may be:
|
|
* - An instance implementing MiddlewareInterface
|
|
* - A string containing the fully qualified class name of a class
|
|
* implementing MiddlewareInterface
|
|
* - A callable that returns an instance implementing MiddleInterface
|
|
* - A callable matching the signature of MiddlewareInterface::dispatch
|
|
* @see DispatchedInterface::dispatch
|
|
*
|
|
* @param mixed $middleware Middleware to dispatch in sequence
|
|
* @return static
|
|
*/
|
|
public function addMiddleware($middleware);
|
|
}
|