[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Class Route (I need Help!!!)
PhP-Padawan
Всем, доброго времени суток. Имея малую практику в PHP, столкнулся с проблемой. Решил написать свой не большой класс для маршрутизации запросов. Если брать по минимуму то в классе будет 3 метода:

set_routes -> Который будет записывать список маршрутов;
url_for -> Будет смотреть есть ли в массиве routes маршрут с нужным именем и параметрами и возвращать url.
is_match -> Который должен определить соответствует текущий REQUEST_URI какому либо элементу массива routes. Вообщем проблема именно в реализации этого метода. Вот пример набросанного мною класса Router.

index.php

include_once 'Router.php';
$route_obj = new Router();

$route_obj->setRoute('home',array('url'=>'home/index/:name{string}/:age{integer}','controller'=>'Home','action'=>'Index'));
//генерируем url по имени маршрута
echo $route_obj->url_for('home',array('name'=>'slava','age'=>22));
//должно вернуть имя controller and action
$route_obj->is_match($route_obj->url_for('home',array('name'=>'slava','age'=>22)));



Router.php

class Router
{
protected $routes = array();

public function setRoute($name,$controller_params){
$this->routes[$name] = $controller_params;
}
public function url_for($name,$params = null){
if(isset($this->routes[$name])){

$url = $this->routes[$name]['url'];
preg_match_all('/\/:(.+?){(.+?)}/',$url,$match,PREG_SET_ORDER);
foreach($match as $key=>$route_params){
if(isset($params[$route_params[1]]) && gettype($params[$route_params[1]]) == $route_params[2]){
$url = preg_replace('/:'.$route_params[1].'{'.$route_params[2].'}/',$params[$route_params[1]],$url);
}
else{
var_dump('fe');
}
}

return $url;
}else{
var_dump('no route');
}

}


public function is_match($url){
//Как правильно реализовать структуру этого метода. Что бы было красиво и не было похоже на быдло кодинг.
}

}



Прошу на править меня в правильное русло. Буду признателен за любую идею и мысли в данном вопросе
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.