php的CI框架中_remap的怎么用

是php的CI框架中的_remap对uri有什么作用,看文档看不明白,博客都是一个版本也不是很清楚,可以举个例子说明一下_remap的作用吗

阅读 3.7k
1 个回答

如果你的控制包含一个 _remap() 方法,那么无论 URI 中包含什么参数时都会调用该方法。 它允许你定义你自己的路由规则,重写默认的使用 URI 中的分段来决定调用哪个方法这种行为。

很简单,如果有_remap 存在,那么它始终会被调用,你如你在url中指定的A方法,可以在此函数中让程序实际执行B方法。

举个例子,比如 我可以让某些方法公用一个url地址

GET /comments 列出所有评论

POST /comments 创建新评论

如果没有_remap, 我可以在一个方法中,判断请求方式,如果是GET执行列出评论的方法,如果是POST 就执行创建评论的逻辑。

有了_remap 就可以单独两个方法控制,比如:


public function comments($params) 
{
    //list comments
}

public function _comments_posts($params)
{
    //此方法属于CI私有控制器方法,不能通过url直接请求,可以起到保护方法的作用
    //add comments
}

public function _remap($method, $params = [])
{
    if ($_SERVER["REQUEST_METHOD"] == 'GET') {
        return call_user_func_array([$this, $method], $params);
    } elseif ($_SERVER["REQUEST_METHOD"] == 'POST') {
        return call_user_func_array([$this, '_'.$method.'_post'], $params);
    }  
}

当然,还有其他用途,可以按照需求具体使用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题