<?php

$request_uri = $_SERVER["REQUEST_URI"];

$arr_pattern_uri = array(
    array(
        "pattern" => "#^/$#i",
        "controller" => "Home",
        "action" => "index",
    ),


    array(
        "pattern" => "#^/login/[?]{0,1}[^/]*$#i",
        "controller" => "Home",
        "action" => "login",
    ),

    array(
        "pattern" => "#^/posts/[?]{0,1}[^/]*$#i",
        "controller" => "Home",
        "action" => "posts",
    ),

    array(
        "pattern" => "#^/posts/([0-9]+?)[-](.*?)/[?]{0,1}[^/]*$#i",
        "controller" => "Home",
        "action" => "post",
    ),



    array(
        "pattern" => "#^/form/(.*?)/[?]{0,1}[^/]*$#i",
        "controller" => "Form",
        "action" => "*",
    ),

);


// Если $t = 0 - ни один из роутов не обнаружен
$t = 0;
$request_params = "";
$pattern_uri = "";
foreach ($arr_pattern_uri as $pattern)
{
    if (preg_match($pattern["pattern"], $request_uri, $request_params))
    {

        $pattern_uri = $pattern;
        $t = 1;
        break;
    }
}

if (class_exists($pattern_uri["controller"])  )
{
    $obj  = new $pattern_uri["controller"] ();
    $str_method = "";
    if ($pattern_uri["action"] == "*")
    {



        $str_method = $request_params[1];
        if (!method_exists($obj , $str_method))
        {
            $str_method = "";
        }

    }
    else
    {

        $str_method = $pattern_uri["action"];
        if (!method_exists($obj , $str_method))
        {
            $str_method = "";
        }
    }

    if (strlen($str_method) > 0)
    {

      
        $obj->request_params = $request_params;
        $obj->$str_method();


    }
    else
    {
        //Redirect();
    }

}