D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
psa
/
admin
/
plib
/
vendor
/
slim
/
slim
/
Slim
/
Routing
/
Filename :
RouteResolver.php
back
Copy
<?php /** * Slim Framework (https://slimframework.com) * * @license https://github.com/slimphp/Slim/blob/4.x/LICENSE.md (MIT License) */ declare(strict_types=1); namespace Slim\Routing; use RuntimeException; use Slim\Interfaces\DispatcherInterface; use Slim\Interfaces\RouteCollectorInterface; use Slim\Interfaces\RouteInterface; use Slim\Interfaces\RouteResolverInterface; use function rawurldecode; /** * RouteResolver instantiates the FastRoute dispatcher * and computes the routing results of a given URI and request method */ class RouteResolver implements RouteResolverInterface { protected RouteCollectorInterface $routeCollector; private DispatcherInterface $dispatcher; public function __construct(RouteCollectorInterface $routeCollector, ?DispatcherInterface $dispatcher = null) { $this->routeCollector = $routeCollector; $this->dispatcher = $dispatcher ?? new Dispatcher($routeCollector); } /** * @param string $uri Should be $request->getUri()->getPath() */ public function computeRoutingResults(string $uri, string $method): RoutingResults { $uri = rawurldecode($uri); if ($uri === '' || $uri[0] !== '/') { $uri = '/' . $uri; } return $this->dispatcher->dispatch($method, $uri); } /** * @throws RuntimeException */ public function resolveRoute(string $identifier): RouteInterface { return $this->routeCollector->lookupRoute($identifier); } }