class Test
{
public function A ($a, $b, $c)
{
}
}
$a =1;
$b =2;
$c =3;
如何实现 调用 b 方法时:
b($a,$b,$c)
b($b,$a,$c)
就是说在不知道变量是什么值的时候,实现赋值,调用:
b(1,2,3)
b(2,1,3)
换一个说法就是:如何使用array('b'=>2, 'a'=>1, 'c'=>3),对b 方法进行调用,赋值
补充:就是说,我想要实现
b(1,2,3)
b(2,1,3)
这样的结果,但是我并不知道哪个是$a,哪个是$b,哪个是$c
4 回答
![?](http://img1.sycdn.imooc.com/54584de700017cbd02200220-100-100.jpg)
白猪掌柜的
TA贡献1893条经验 获得超10个赞
不知道参数,这个其实可以用反射类relation来搞定
// 其中Test为类名
$ref = new ReflectionClass('Test');
// A为类下面的方法名
$method = $ref->getMethod('A');
// 开始传递参数,其中vars为传递的参数集合.
$result = $method->invokeArgs(new Test(),$vars)
这个就是反射.详细请查阅文档Reflection
当然这个是类的调用,如果是单纯的方法,请使用ReflectionFunction,
请根据具体的实例来new具体的reflection
![?](http://img1.sycdn.imooc.com/545850a00001fdd002200220-100-100.jpg)
Helenr
TA贡献1780条经验 获得超4个赞
问题是否可以转换为:当参数列表组成一个数组时,如何利用此数组调用指定方法?
答:利用 call_user_func_array
例如:
$arr = array(
'a' => 1,
'b' => 2,
'c' => 3,
);
function test_for_call($a, $b, $c)
{
return $a + $b + $c;
}
// 进行题中的调用
call_user_func_array('test_for_call', $arr); // 返回 6
- 4 回答
- 0 关注
- 550 浏览
添加回答
举报
0/150
提交
取消