2

URI 中的段通常遵循 Codeigniter 中的这种模式:

XYZ.com/Class/Method/param1/param2

当在控制器中定义被调用的方法时,这可以按预期工作,但是如果我为 URI 提供一些未定义的方法来调用处理任何未定义方法的 __call 魔术方法,则没有任何作用。

__call 仅在从控制器本身调用时才被调用,而不是当我从 URI 调用某些未定义的方法时

有什么解释吗?

谢谢

4

2 回答 2

4

在 CodeIgniter 中,有_remap. 所以如果你去

XYZ.com/Class/UndefinedMethod/param1/param2

then_remap将被调用(实际上_remap总是会被调用,因此我们需要确保正确调用确实存在的方法)。

function _remap($method, $params=array()){
    $funcs = get_class_methods($this);
    if(in_array($method, $funcs)){ // We are trying to go to a method in this class
        return call_user_func_array(array($this, $method), $params);
    }
    // else do something else
}
于 2012-08-17T21:00:24.950 回答
0

查看服务器(Apache?)日志文件。毫无疑问,您会看到导致处理中止的 PHP 错误。除非您通过将未定义的函数重新映射到错误页面来覆盖它们,否则随机 URL 将导致“什么都没有”发生。

于 2012-08-17T21:01:54.647 回答