fix my code
This commit is contained in:
parent
af5b329878
commit
7cccb8f7f8
3 changed files with 42 additions and 26 deletions
5
composer.lock
generated
5
composer.lock
generated
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "940ccbcb1b206dcb38091502bcc75e12",
|
||||
"content-hash": "79651834eb50af774229c9ce1083564d",
|
||||
"packages": [
|
||||
{
|
||||
"name": "amphp/amp",
|
||||
|
@ -2963,7 +2963,8 @@
|
|||
"prefer-stable": true,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": ">=8.2"
|
||||
"php": ">=8.2",
|
||||
"ext-apcu": "*"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.3.0"
|
||||
|
|
|
@ -4,3 +4,8 @@ parameters:
|
|||
message: "#^Parameter \\#1 \\$data of function unserialize expects string, string\\|false given\\.$#"
|
||||
count: 1
|
||||
path: src/Infrastructure/WebApp/Route/CachedRouteCollector.php
|
||||
|
||||
-
|
||||
message: "#^Method Lubian\\\\AttributeMagic\\\\Infrastructure\\\\WebApp\\\\Route\\\\HandlerResolver\\:\\:getRouteInfo\\(\\) return type has no value type specified in iterable type array\\.$#"
|
||||
count: 1
|
||||
path: src/Infrastructure/WebApp/Route/HandlerResolver.php
|
||||
|
|
|
@ -8,6 +8,7 @@ use Lubian\AttributeMagic\Infrastructure\Event\Dispatcher;
|
|||
use Lubian\AttributeMagic\Infrastructure\Route\Handler;
|
||||
use Lubian\AttributeMagic\Infrastructure\Route\HttpMethod;
|
||||
use Lubian\AttributeMagic\Infrastructure\WebApp\Request\RequestEvent;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
use function count;
|
||||
|
@ -26,27 +27,7 @@ final readonly class HandlerResolver
|
|||
#[AsListener(RequestEvent::class, -90)]
|
||||
public function resolveHandler(RequestEvent $event): void
|
||||
{
|
||||
$routesEvent = new CollectRoutes($this->cached);
|
||||
$this->dispatcher->dispatch($routesEvent);
|
||||
$dispatcher = $this->dispatcher;
|
||||
|
||||
$routeDispatcher = cachedDispatcher(static function (RouteCollector $r) use (
|
||||
$dispatcher,
|
||||
$routesEvent
|
||||
): void {
|
||||
$dispatcher->dispatch($routesEvent);
|
||||
foreach ($routesEvent->routes as $h) {
|
||||
$r->addRoute($h->method->value, $h->path, [$h->handlerClass, $h->handlerMethod]);
|
||||
}
|
||||
}, [
|
||||
'cacheFile' => __DIR__ . '/../../../../var/route.cache',
|
||||
'cacheDisabled' => ! $this->cached,
|
||||
]);
|
||||
|
||||
$routeInfo = $routeDispatcher->dispatch(
|
||||
$event->request->getMethod(),
|
||||
$event->request->getPathInfo(),
|
||||
);
|
||||
$routeInfo = $this->getRouteInfo($event->request);
|
||||
|
||||
if ($routeInfo[0] === \FastRoute\Dispatcher::NOT_FOUND) {
|
||||
$this->notFound($event);
|
||||
|
@ -60,11 +41,11 @@ final readonly class HandlerResolver
|
|||
}
|
||||
|
||||
if (
|
||||
! is_array($routeInfo[1])
|
||||
is_array($routeInfo[1]) === false
|
||||
|| count($routeInfo[1]) !== 2
|
||||
|| ! is_string($routeInfo[1][0])
|
||||
|| is_string($routeInfo[1][0]) === false
|
||||
|| $routeInfo[1][0] === ''
|
||||
|| ! is_string($routeInfo[1][1])
|
||||
|| is_string($routeInfo[1][1]) === false
|
||||
|| $routeInfo[1][1] === ''
|
||||
) {
|
||||
$this->notFound($event);
|
||||
|
@ -84,6 +65,35 @@ final readonly class HandlerResolver
|
|||
$event->request->attributes->add($args);
|
||||
}
|
||||
|
||||
private function getRouteInfo(Request $request): array
|
||||
{
|
||||
$dispatcher = $this->createRouteDispatcher();
|
||||
return $dispatcher->dispatch(
|
||||
$request->getMethod(),
|
||||
$request->getPathInfo(),
|
||||
);
|
||||
}
|
||||
|
||||
private function createRouteDispatcher(): \FastRoute\Dispatcher
|
||||
{
|
||||
$routesEvent = new CollectRoutes($this->cached);
|
||||
$this->dispatcher->dispatch($routesEvent);
|
||||
$dispatcher = $this->dispatcher;
|
||||
|
||||
return cachedDispatcher(static function (RouteCollector $r) use (
|
||||
$dispatcher,
|
||||
$routesEvent
|
||||
): void {
|
||||
$dispatcher->dispatch($routesEvent);
|
||||
foreach ($routesEvent->routes as $h) {
|
||||
$r->addRoute($h->method->value, $h->path, [$h->handlerClass, $h->handlerMethod]);
|
||||
}
|
||||
}, [
|
||||
'cacheFile' => __DIR__ . '/../../../../var/route.cache',
|
||||
'cacheDisabled' => ! $this->cached,
|
||||
]);
|
||||
}
|
||||
|
||||
private function notFound(RequestEvent $event): void
|
||||
{
|
||||
$event->response = new Response('Not Found', 404);
|
||||
|
|
Loading…
Reference in a new issue