ReflectionMethod->invokeArgs的大坑

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

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

猜你喜欢

转载自blog.csdn.net/m0_37477061/article/details/85329351