- Add DISCOVERY_LOG_LEVEL=debug - Add DISCOVERY_SHOW_PROGRESS=true - Temporary changes for debugging InitializerProcessor fixes on production
72 lines
1.7 KiB
PHP
72 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Framework\Router;
|
|
|
|
use App\Framework\Core\Route;
|
|
use App\Framework\Http\Method;
|
|
use Countable;
|
|
use Generator;
|
|
|
|
final readonly class RouteCollection implements Countable
|
|
{
|
|
/**
|
|
* @param array<string, array{static: array<string, callable>, dynamic: array<array{regex: string, handler: callable}>}> $routes
|
|
#* @param array<string, array{path: string, method: Method, handler: callable}> $namedRoutes
|
|
*/
|
|
public function __construct(
|
|
private array $routes,
|
|
private array $namedRoutes = []
|
|
) {
|
|
}
|
|
|
|
public function getStatic(Method $method): array
|
|
{
|
|
return $this->routes[$method->value]['static'] ?? [];
|
|
}
|
|
|
|
public function getDynamic(Method $method): array
|
|
{
|
|
return $this->routes[$method->value]['dynamic'] ?? [];
|
|
}
|
|
|
|
public function has(Method $method): bool
|
|
{
|
|
return isset($this->routes[$method->value]);
|
|
}
|
|
|
|
public function getByMethod(Method $method): array
|
|
{
|
|
|
|
return ($this->routes[$method->value]['dynamic'] + $this->routes[$method->value]['static']) ?? [];
|
|
}
|
|
|
|
public function getByName(string $name): ?Route
|
|
{
|
|
return $this->namedRoutes[$name] ?? null;
|
|
}
|
|
|
|
/**
|
|
* Gibt alle Named Routes zurück
|
|
*
|
|
* @return Generator<string, Route>
|
|
*/
|
|
public function getAllNamedRoutes(): Generator
|
|
{
|
|
foreach ($this->namedRoutes as $name => $route) {
|
|
yield $name => $route;
|
|
}
|
|
}
|
|
|
|
public function hasName(string $name): bool
|
|
{
|
|
return isset($this->namedRoutes[$name]);
|
|
}
|
|
|
|
public function count(): int
|
|
{
|
|
return count($this->routes);
|
|
}
|
|
}
|