• 21-06-2023, 13:47:05
    #1
    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))
    {
    
    }
    }
    
    
    
    }
    }
    ?>
  • 22-06-2023, 01:15:16
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Kodlarda problem görünmüyor, çağırma yönteminiz ile ilgili görünüyor.
  • 22-06-2023, 01:24:36
    #3
    ByteNet adlı üyeden alıntı: mesajı görüntüle
    Kodlarda problem görünmüyor, çağırma yönteminiz ile ilgili görünüyor.
    Hocam valla sildim direkt projeyi mvc oop ile sıfırdan başladım