background image

前段时间写了个关于手机应用的

api,一直是用的 query_string 这种地址,而且还是根据一

act 参数来区分所有的动作,这种让开发人员看起来比较费眼。本来想改写为“?

c=controller&m=method&type=3&id=1” 这种形式,利用 m 参数来载入文件并进行实例化,
后来看了

sina weibo api 是对地址进行了路由。也决定跟风对地址路由。本来 CI 框架自己自

带路由效果,但是因为考虑是写

api,想写的比较纯粹一点。

支持默认控制器

(index)和方法(index):

 
 
复制代码

 代码如下:

index.php
index.php/controller
index.php/controller/method
index.php/controller/method/prarme1/value1
index.php/controller/method/param1/value1/param2/value2.....
 
 
具体类如下:
 
 
复制代码

 代码如下:

<?phpdefine('MODULE_DIR', './classes/');

$APP_PATH

str_replace

(

$_SERVER

['DOCUMENT_ROOT'], '', 

__FILE__

);    

$SE_STRING

=

str_replace

(

$APP_PATH

, '', 

$_SERVER

['REQUEST_URI']);    

//计算出 index.php

后面的字段

 index.php/controller/methon/id/3

$SE_STRING

=trim(

$SE_STRING

,'/');

//echo $SE_STRING.'<br>';
//这里需要对$SE_STRING 进行过滤处理。

$ary_url

=

array

(

    

'controller'=>'index',

    

'method'=>'index',

    

'pramers'=>

array

()

    

);

//var_dump($ary_url);

$ary_se

=

explode

('/', 

$SE_STRING

);

$se_count

=

count

(

$ary_se

);

 

//路由控制
if

(

$se_count

==1 

and

 

$ary_se

[0]!='' ){

    

$ary_url

['controller']=

$ary_se

[0];

 
}

else

 

if

(

$se_count

>1){

//计算后面的参数,key-value

    

$ary_url

['controller']=

$ary_se

[0];

    

$ary_url

['method']=

$ary_se

[1];

    

if

(

$se_count

>2 

and

 

$se_count

%2!=0){ 

//没有形成 key-value 形式