CodeIgniter 控制器 - 重新定义方法的调用规则

如上所述,URI 的第二片段决定会调用控制器中的哪个方法。CodeIgniter 允许你使用 _remap() 方法来废除这种规则:public function _remap() { // Some code here... }注意:如果你的控制器中包含一个名为 _remap() 的方法,那么不管你的 URI 中包含什么,它总会被忽略掉。

这个方法会废除掉由 URI 片段来决定哪个方法被调用的规则,允许你重新定义调用方法的规则(方法的路由规则)。

被重新定义的方法调用方式(一般是 URI 中的第二片段)将作为一个参数传递给 _remap() : public function _remap($method) { if ($method == 'some_method') { $this->$method(); } else { $this->comments(); } }任何附加在该方法名称之后的段都会被视为 _remap() 的第二个参数(可选)。这个可选的数组参数可以与PHP的call_user_func_array联用,模拟CodeIgniter的默认行为。public function _remap($method, $params = array()) { $method = 'process_'.$method; if (method_exists($this, $method)) { return call_user_func_array(array($this, $method), $params); } show_404(); }