如果你的控制包含一个 _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); } } 当然,还有其他用途,可以按照需求具体使用。
很简单,如果有
_remap
存在,那么它始终会被调用,你如你在url
中指定的A
方法,可以在此函数中让程序实际执行B
方法。举个例子,比如 我可以让某些方法公用一个url地址
GET /comments
列出所有评论POST /comments
创建新评论如果没有
_remap
, 我可以在一个方法中,判断请求方式,如果是GET
执行列出评论的方法,如果是POST
就执行创建评论的逻辑。有了
_remap
就可以单独两个方法控制,比如:当然,还有其他用途,可以按照需求具体使用。