add interfaces for route and route collection

This commit is contained in:
Bence Pőcze 2023-04-19 22:15:49 +02:00
parent 3893ed2231
commit 0f87a9c6e3
Signed by: bence
GPG Key ID: DC5BD6E95A333E6D
4 changed files with 35 additions and 3 deletions

View File

@ -0,0 +1,12 @@
<?php namespace SokoWeb\Interfaces\Routing;
interface IRoute
{
public function getId(): string;
public function getHandler(): array;
public function generateLink(array $parameters = []): string;
public function testAgainst(array $path): ?array;
}

View File

@ -0,0 +1,16 @@
<?php namespace SokoWeb\Interfaces\Routing;
use Closure;
interface IRouteCollection
{
public function get(string $id, string $pattern, array $handler): void;
public function post(string $id, string $pattern, array $handler): void;
public function group(string $pattern, Closure $group): void;
public function getRoute(string $id): ?IRoute;
public function match(string $method, string $uri): ?array;
}

View File

@ -1,6 +1,8 @@
<?php namespace SokoWeb\Routing; <?php namespace SokoWeb\Routing;
class Route use SokoWeb\Interfaces\Routing\IRoute;
class Route implements IRoute
{ {
private string $id; private string $id;

View File

@ -1,8 +1,10 @@
<?php namespace SokoWeb\Routing; <?php namespace SokoWeb\Routing;
use Closure; use Closure;
use SokoWeb\Interfaces\Routing\IRoute;
use SokoWeb\Interfaces\Routing\IRouteCollection;
class RouteCollection class RouteCollection implements IRouteCollection
{ {
private array $routes = []; private array $routes = [];
@ -32,7 +34,7 @@ class RouteCollection
array_pop($this->groupStack); array_pop($this->groupStack);
} }
public function getRoute(string $id): ?Route public function getRoute(string $id): ?IRoute
{ {
if (!isset($this->routes[$id])) { if (!isset($this->routes[$id])) {
return null; return null;