php编写一个简单的路由类

  类代码:

  

复制代码 代码如下:

  <?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); //在这里可以看到各元素

  ?>