<?php
$request_uri = $_SERVER [ "REQUEST_URI" ] ;
$arr_pattern_uri = array ( "pattern" => "#^/$#i" ,
"controller" => "Home" ,
"action" => "index" ,
) ,
"pattern" => "#^/login/[?]{0,1}[^/]*$#i" ,
"controller" => "Home" ,
"action" => "login" ,
) ,
"pattern" => "#^/posts/[?]{0,1}[^/]*$#i" ,
"controller" => "Home" ,
"action" => "posts" ,
) ,
"pattern" => "#^/posts/([0-9]+?)[-](.*?)/[?]{0,1}[^/]*$#i" ,
"controller" => "Home" ,
"action" => "post" ,
) ,
"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 ;
}
}
{
$obj = new $pattern_uri [ "controller" ] ( ) ;
$str_method = "" ;
if ( $pattern_uri [ "action" ] == "*" )
{
$str_method = $request_params [ 1 ] ;
{
$str_method = "" ;
}
}
else
{
$str_method = $pattern_uri [ "action" ] ;
{
$str_method = "" ;
}
}
{
$obj -> request_params = $request_params ;
$obj -> $str_method ( ) ;
}
else
{
//Redirect();
}
}
PD9waHAKCiRyZXF1ZXN0X3VyaSA9ICRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOwoKJGFycl9wYXR0ZXJuX3VyaSA9IGFycmF5KAogICAgYXJyYXkoCiAgICAgICAgInBhdHRlcm4iID0+ICIjXi8kI2kiLAogICAgICAgICJjb250cm9sbGVyIiA9PiAiSG9tZSIsCiAgICAgICAgImFjdGlvbiIgPT4gImluZGV4IiwKICAgICksCgoKICAgIGFycmF5KAogICAgICAgICJwYXR0ZXJuIiA9PiAiI14vbG9naW4vWz9dezAsMX1bXi9dKiQjaSIsCiAgICAgICAgImNvbnRyb2xsZXIiID0+ICJIb21lIiwKICAgICAgICAiYWN0aW9uIiA9PiAibG9naW4iLAogICAgKSwKCiAgICBhcnJheSgKICAgICAgICAicGF0dGVybiIgPT4gIiNeL3Bvc3RzL1s/XXswLDF9W14vXSokI2kiLAogICAgICAgICJjb250cm9sbGVyIiA9PiAiSG9tZSIsCiAgICAgICAgImFjdGlvbiIgPT4gInBvc3RzIiwKICAgICksCgogICAgYXJyYXkoCiAgICAgICAgInBhdHRlcm4iID0+ICIjXi9wb3N0cy8oWzAtOV0rPylbLV0oLio/KS9bP117MCwxfVteL10qJCNpIiwKICAgICAgICAiY29udHJvbGxlciIgPT4gIkhvbWUiLAogICAgICAgICJhY3Rpb24iID0+ICJwb3N0IiwKICAgICksCgoKCiAgICBhcnJheSgKICAgICAgICAicGF0dGVybiIgPT4gIiNeL2Zvcm0vKC4qPykvWz9dezAsMX1bXi9dKiQjaSIsCiAgICAgICAgImNvbnRyb2xsZXIiID0+ICJGb3JtIiwKICAgICAgICAiYWN0aW9uIiA9PiAiKiIsCiAgICApLAoKKTsKCgovLyDQldGB0LvQuCAkdCA9IDAgLSDQvdC4INC+0LTQuNC9INC40Lcg0YDQvtGD0YLQvtCyINC90LUg0L7QsdC90LDRgNGD0LbQtdC9CiR0ID0gMDsKJHJlcXVlc3RfcGFyYW1zID0gIiI7CiRwYXR0ZXJuX3VyaSA9ICIiOwpmb3JlYWNoICgkYXJyX3BhdHRlcm5fdXJpIGFzICRwYXR0ZXJuKQp7CiAgICBpZiAocHJlZ19tYXRjaCgkcGF0dGVyblsicGF0dGVybiJdLCAkcmVxdWVzdF91cmksICRyZXF1ZXN0X3BhcmFtcykpCiAgICB7CgogICAgICAgICRwYXR0ZXJuX3VyaSA9ICRwYXR0ZXJuOwogICAgICAgICR0ID0gMTsKICAgICAgICBicmVhazsKICAgIH0KfQoKaWYgKGNsYXNzX2V4aXN0cygkcGF0dGVybl91cmlbImNvbnRyb2xsZXIiXSkgICkKewogICAgJG9iaiAgPSBuZXcgJHBhdHRlcm5fdXJpWyJjb250cm9sbGVyIl0gKCk7CiAgICAkc3RyX21ldGhvZCA9ICIiOwogICAgaWYgKCRwYXR0ZXJuX3VyaVsiYWN0aW9uIl0gPT0gIioiKQogICAgewoKCgogICAgICAgICRzdHJfbWV0aG9kID0gJHJlcXVlc3RfcGFyYW1zWzFdOwogICAgICAgIGlmICghbWV0aG9kX2V4aXN0cygkb2JqICwgJHN0cl9tZXRob2QpKQogICAgICAgIHsKICAgICAgICAgICAgJHN0cl9tZXRob2QgPSAiIjsKICAgICAgICB9CgogICAgfQogICAgZWxzZQogICAgewoKICAgICAgICAkc3RyX21ldGhvZCA9ICRwYXR0ZXJuX3VyaVsiYWN0aW9uIl07CiAgICAgICAgaWYgKCFtZXRob2RfZXhpc3RzKCRvYmogLCAkc3RyX21ldGhvZCkpCiAgICAgICAgewogICAgICAgICAgICAkc3RyX21ldGhvZCA9ICIiOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoc3RybGVuKCRzdHJfbWV0aG9kKSA+IDApCiAgICB7CgogICAgICAKICAgICAgICAkb2JqLT5yZXF1ZXN0X3BhcmFtcyA9ICRyZXF1ZXN0X3BhcmFtczsKICAgICAgICAkb2JqLT4kc3RyX21ldGhvZCgpOwoKCiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgLy9SZWRpcmVjdCgpOwogICAgfQoKfQ==