我正在尝试使用SEO友好的URL创建一个内容管理系统。我的问题是,使用htaccess我已经通过$_GET['url']
传递了我的网址。
要获取“call_user_func_array”的参数,我只是$_GET['url']
/
我允许我的用户为SEO友好的URL WITH 斜杠(/
)创建短标签,因此他们的短标签有时会作为更多参数传递。有没有办法在调用类/函数中再次收集所有参数?
答案 0 :(得分:2)
$args = func_get_args();
将为您提供传递给函数的所有参数的数组。这实际上是通过使用call_user_func_array()
;
答案 1 :(得分: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也是如此。