前段时间,我写了一个API,移动应用程序,它一直用于query_string地址。它又区别于基于行为参数的所有行动,这使得开发商似乎更贵。本来,我想重写C = controllerm = methodtype = 3id = 1的形式,使用参数文件加载和初始化它们,后来看到新浪微博API是路由的地址。也决定按照地址路线。CI框架本身有它自己的路由效果,但因为它是写API的思维,这是单纯一点。
支持默认的控制器(索引)和方法(索引):
复制代码代码如下所示:
index.php
索引/控制器
索引方法
指标。PHP / / /控制器的方法prarme1 /中
指标。PHP /控制器/方法/参数 / / / param2 value1 value2…


具体类别如下:
复制代码代码如下所示:
< phpdefine('module_dir '、'。 / /班);
app_path美元= str_replace($ _server { } 'document_root ',' ',__file__);
se_string美元= str_replace(app_path美元,美元_server { 'request_uri}); / / /控制指标。PHP /方法/身份证/ 3 index.php后面的计算字段
se_string美元=装饰($ se_string);
/ /回声se_string美元。;
这里se_string美元/ /过滤器的需要。
ary_url美元=阵列(
控制器= > 'index,
方法= > 'index,
pramers= >阵列()
);
/ / var_dump($ ary_url);
ary_se美元=爆炸(',se_string美元);
se_count美元=计数($ ary_se);

路由控制
如果($ se_count = = 1美元和ary_se { 0 } ={!)
ary_url美元{ 'controller} = $ ary_se { 0 };

} else if($ se_count > 1){ / /计算以下参数、关键值
ary_url美元{ 'controller} = $ ary_se { 0 };
ary_url { } =美元表现的美元ary_se { 1 };
如果($ se_count > 2美元se_count % 2!= 0){无键值形式
模具('parameter错误);
其他{ }
为($我= 2;$我<< se_count美元美元美元;我=我+ 2){
ary_kv_hash美元=阵列(strtolower($ ary_se {我})= > $ ary_se { $我+ 1 });
ary_url { } = array_merge pramers美元(美元ary_url { pramers },ary_kv_hash美元);
}
}
}


module_name美元美元'controllerary_url { } =;
module_file = module_dir美元。module_name美元。。类。php;
/ /回声module_file美元;
method_name美元=美元表现的ary_url { };
如果(file_exists($ module_file)){
包括($ module_file);
obj_module美元=新module_name美元(M); / /实例化模块

如果(!method_exists(obj_module美元,美元method_name)){
死(表现并不存在);
其他{ }
如果(is_callable(阵列(obj_module美元,美元method_name))){ / /能调用此方法
/ / var_dump($ ary_url { pramers });
get_return美元=美元obj_module -> method_name美元(美元ary_url { pramers }); / /方法和数组参数传递核心价值
如果(!is_null($ get_return)){ / /返回值不为空
var_dump($ get_return);
}

其他{ }
模具(这个方法不能被称为');
}

}
}
其他的
{
模具('module文件不存在);
}
>