编写一个简单的路由类

<?php
class Router
{
    public function getRouter($types = 1)
    {
        if ( isset($_SERVER['PATH_INFO']) )
        {
            $query_string = substr(str_replace(array('.html','.htm', '.asp', '//'), '',$_SERVER['PATH_INFO']),1);
        }
        else
        {
            $query_string = str_replace($_SERVER['SCRIPT_NAME'], '',$_SERVER['PHP_SELF']);
        }
        if ( $types == 1 )
        {
            // 第一种类型以/分隔
            $temp = explode('/', $query_string);
        }
        elseif ($types == 2)
        {
            $temp = explode('-', $query_string);
        }
        elseif ($types == 3)
        {
            return array('Controller'=>$_GET['controller']);
        }
  
        if ( empty($temp[0]) )
        {
            return array('Controller' => 'index','Operate' => 'index');
        }
        if ( empty($temp[1]) )
        {
           $temp[] = 'index';
        }
        // 去除空项 
        foreach ($temp as $val)
        {
            if ($val)
           {
                $url[] = $val;
           }
      }
      list($controller, $operate) = $url;
      //有参数的情况
      $params = array();
      if ( count($url)>2 )
      {
           array_shift($url);
           array_shift($url);
           $params = $url;
      }
     return
      array(
       "Controller" => $controller,
       "Operate" => $operate,
       "params" => $params,
      );
     }
}
?>

<?php
$url = new Router();
$url->getRouter(1);
print_r($url); //在这里可以看到各元素
?>

posted on 2011-04-11 20:27  wufoo  阅读(370)  评论(0编辑  收藏  举报

导航