php – 如何在codeigniter钩子中检索第三个uri段

前端之家收集整理的这篇文章主要介绍了php – 如何在codeigniter钩子中检索第三个uri段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个自定义的post_controller钩子.我们知道,codeigniter uri结构是这样的:
example.com/class/function/id/

和我的代码

function hook_acl()
{
    global $RTR;
    global $CI;

    $controller = $RTR->class; // the class part in uri
    $method = $RTR->method; // the function part in uri
    $id = ? // how to parse this?

    // other codes omitted for brevity
}

我浏览了核心的Router.PHP文件,这让我很困惑.

谢谢.

使用CodeIgniter URI核心类

通常在CodeIgniter Hooks中,我们需要加载/实例化URI核心类以到达方法.

>对于post_controller_constructor,post_controller,… hooks,我们可以获取CodeIgniter超级对象并使用uri类:

# Get the CI instance
$CI =& get_instance();

# Get the third segment
$CI->uri->segment(3);

>但是对于pre_controller挂钩,我们无法访问CodeIgniter超级对象所以我们必须手动加载URI核心类,如下所示:

# Load the URI core class
$uri =& load_class('URI','core');

# Get the third segment
$id = $uri->segment(3); // returns the id

使用纯PHP

在这种方法中,您可以使用$_SERVER数组来获取URI段:

$segments = explode('/',trim($_SERVER['REQUEST_URI'],'/'));

$controller = $segments[1];
$method     = $segments[2];
$id         = $segments[3];

猜你在找的PHP相关文章