Files
michaelschiemer/src/Framework/Router/RouteCollection.php
Michael Schiemer 55a330b223 Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug
- Add DISCOVERY_SHOW_PROGRESS=true
- Temporary changes for debugging InitializerProcessor fixes on production
2025-08-11 20:13:26 +02:00

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);
}
}