我正在编写自己的框架(用于学习),我正处于将参数传递给方法的阶段。目前我通过以下方式实现这一目标:
$params = array_slice($url, 1);
$class->{$method[1]}($params);
然后在课程的方法中$params = func_get_arg(0);
这有效但不理想,我注意到在Codeigniter中你可以调用
http://domain.com/controller/method/p1/p2/p3
...
然后在方法中通过
获得这些 method($p1, $p2, $p3){}
这是我更喜欢的。我该如何设置呢?
ps:我的类都扩展了基类
答案 0 :(得分:1)
在幕后,我打赌CI使用call_user_func_array()
来执行此操作:
call_user_func_array( array( $class, $method[1]), $params);
现在,根据数组中的参数数量,您可以使用您所暗示的方法:
method($p1, $p2, $p3){}
假设$params
数组中有3个参数。
答案 1 :(得分:0)
尝试this:
call_user_func_array( array( $class, $method ), $params );
答案 2 :(得分:0)
您是否尝试传递包含所有参数的数组,而不是尝试逐个传递所有参数?