ReflectionMethod->invokeArgs的大坑

php里动态调用函数是需要特别注意的,比如一个函数的输入参数定义了引用类型,那么用call_user_func_xxx肯定完蛋了,包括call_user_func,因为这个时候php调用时其实是采用的是可分离参数方式调用的,因此所有的请求参数都被分离了,所以你无论如何也得不到你的引用所修改的结果。但是invokeArgs方法则不然,它在调用时对no_seperation变量取值为1的,也就是说不允许分离操作,因此你可以得到你要修改的值,但是杯具的是一般在调用invokeArgs方法前肯定是要通过调用func_get_args来得到请求参数的,而func_get_args得到的并不是原请求参数,而是请求参数的拷贝,因此你仍然不能得到你想要的结果。换句话说,对于可变参数的动态函数调用来说,你没有任何办法得到你想的结果。

比较奇怪的是php里对此并没有任何的说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值