今天同事反馈一个问题, PHP5.2.x在使用反射做函数包装的时候, 得到"Invocation failed"的异常, 而使用call_user_func代替则不会,
原逻辑太复杂, 经过精简以后可重现异常的代码如下(使用ReflectionFunction为例, ReflectionMethod类似):
with 8 Comments
- function who(&$name) {
- echo $name;
- }
- $name = "laruence";
- $method = new ReflectionFunction("who");
- $method->invokeArgs(array($name));
- //异常:
- Uncaught exception 'ReflectionException' with message
- 'Invocation of function who() failed'