Arkadaşlar selam,

$supportedMethods değişkenimin içerisi $uri ye göre hareket ettiğinden $routes eğer varsa ve $check geçiyorsa dolu gelmesi gerekiyor. Normalde link yapımda /ayarlar olarak gittiğimde yada boş bıraktığımda beni direkt if sorgumdaki "message" => "Method desteklenmiyor. Desteklenen methodlar: $supportedMethods" mesajını veriyor ancak burada da $supportedMethods içeriği boş geliyor. Nerede hata yapıyor olabilirim?

<?php

namespace App\Core;

class Route
{
private static array $routes = [];

private static function getUri() : string {

return $_SERVER["REQUEST_URI"];
}

private static function getMethod() : string {

return strtolower($_SERVER["REQUEST_METHOD"]);
}

private static function checkMethod() : void
    {

$uri = self::getUri();
$method = self::getMethod();
$routes = self::$routes;
$check = array_key_exists($method, $routes);
$supportedMethods = array_filter($routes, function($item) use ($uri)
{
return array_key_exists($uri,$item);
});


if(!$check || !in_array($method, array_keys($supportedMethods)))
{
$supportedMethods = strtoupper(implode("|",array_keys($supportedMethods)));
echo json_encode([
"message" => "Method desteklenmiyor. Desteklenen methodlar: $supportedMethods"
            ]);
exit();
}

}

public static function get(string $url, \Closure|string $action) :Route {

self::$routes["get"][$url] = ["action" => $action];

return new self();

}

public static function put(string $url, \Closure|string $action) :Route {

self::$routes["put"][$url] = ["action" => $action];

return new self();

}

public static function post(string $url, \Closure|string $action) :Route {

self::$routes["post"][$url] = ["action" => $action];

return new self();

}

public static function dispatch() : void {

$uri = self::getUri();
$method = self::getMethod();
$routes = self::$routes;
self::checkMethod();

foreach ($routes[$method] as $url => $item)
{

$pattern = "@" . $url . "$@";
if(preg_match($pattern, $uri, $parameters))
{

}
}



}
}
?>