php里动态调用函数是需要特别注意的,比如一个函数的输入参数定义了引用类型,那么用call_user_func_xxx肯定完蛋了,包括call_user_func,因为这个时候php调用时其实是采用的是可分离参数方式调用的,因此所有的请求参数都被分离了,所以你无论如何也得不到你的引用所修改的结果。但是invokeArgs方法则不然,它在调用时对no_seperation变量取值为1的,也就是说不允许分离操作,因此你可以得到你要修改的值,但是杯具的是一般在调用invokeArgs方法前肯定是要通过调用func_get_args来得到请求参数的,而func_get_args得到的并不是原请求参数,而是请求参数的拷贝,因此你仍然不能得到你想要的结果。换句话说,对于可变参数的动态函数调用来说,你没有任何办法得到你想的结果。
比较奇怪的是php里对此并没有任何的说明
本文探讨了PHP中使用call_user_func系列函数进行动态函数调用时遇到的问题,特别是当被调用函数包含引用参数时的限制。文章指出,由于参数的分离与拷贝机制,即使尝试使用invokeArgs方法也无法直接获取期望的修改结果。
651

被折叠的 条评论
为什么被折叠?



