0

我正在尝试创建一个带有 SEO 友好 URL 的内容管理系统。我的问题是,使用 htaccess 我已经让我的 URL 通过了$_GET['url']

为了获得“call_user_func_array”的参数,我只是$_GET['url']通过/

我允许我的用户为带有斜杠 ( /) 的 SEO 友好 URL 创建短标签,因此他们的短标签有时会作为更多参数传递。有没有办法在调用类/函数中再次收集所有参数?

4

2 回答 2

2
$args = func_get_args();

将为您提供传递给函数的所有参数的数组。这实际上是在撤消您使用call_user_func_array();所做的事情。

于 2011-03-16T11:57:00.833 回答
2

选项 1(将数组(数组)传递给call_user_func_array):

$urls = explode('/', $_GET['url']);

// note that $urls already was an array
call_user_func_array(array('ClassName', 'MethodName'), array($urls));

// inside class ClassName    
function MethodName($urls) { // $urls is passed as array

}


选项 2(使用func_get_args):

$urls = explode('/', $_GET['url']);

// pass the array itself as argument, each split is new function argument
call_user_func_array(array('ClassName', 'MethodName'), $urls);

// inside class ClassName
function MethodName() { // this function has many arguments

    $urls = func_get_args(); // gets all arguments into array
}


选项 3(使用call_user_func代替call_user_func_array):

$urls = explode('/', $_GET['url']);

// pass the array itself as argument
call_user_func(array('ClassName', 'MethodName'), $urls);

// inside class ClassName
function MethodName($urls) { // call_user_func will pass any argument on directly

}


也许选项 3 最适合您。但是,当您想向函数添加更多参数时,可扩展性受到限制,但选项 2 也是如此。

于 2011-03-16T11:59:25.553 回答