php的CI框架中_remap的怎么用

查看:136
本文介绍了php的CI框架中_remap的怎么用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

解决方案

如果你的控制包含一个 _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);
    }  
}

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

这篇关于php的CI框架中_remap的怎么用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆