为了账号安全,请及时绑定邮箱和手机立即绑定

php 在不知道变量参数的情况下,实现调用想要顺序

php 在不知道变量参数的情况下,实现调用想要顺序

PHP
呼唤远方 2019-03-18 12:43:11
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 回答

?
白猪掌柜的

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

查看完整回答
反对 回复 2019-03-18
?
呼如林

TA贡献1798条经验 获得超3个赞

extract函数是不是你想要的?

查看完整回答
反对 回复 2019-03-18
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

call_user_func($functionName, $arg);

查看完整回答
反对 回复 2019-03-18
?
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

参考:call_user_func_array

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 550 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信