看起来有点用词不当,因为在PHP 5.3中不推荐使用引用传递...无论如何,我要做的是使用反射编写单元测试框架,允许您将参数传递给需要的方法一个参考。 e.g。
class Bar {
function TestMethod($arg1, &$result) {
$result = 'hello';
return true;
}
}
$rc = new ReflectionMethod('Bar', 'TestMethod');
$return_val = $rc->invokeArgs($instance, $arguments);
现在,我在http://www.phwinfo.com/forum/comp-lang-php/273316-how-invoke-reflectionmethod-pass-variable-reference-asargument.html发现了一个论坛帖子,这使我简单地将变量引用粘贴到我的$ arguments数组中:
$arguments = array('arg1', &$byref_result);
这确实有效但是给出了“不推荐使用:调用时间传递引用已被弃用”错误。我想确保这些代码是向前兼容的,所以如果它们在PHP 6中完全删除它我将不会被搞砸。显然,由于测试框架的不足,我不想重写项目中的任何代码。任何想法或建议?谢谢! :)
P.S。我试图查看phpunit的文档,看它是否可以做到,但该网站似乎暂时停止。任何链接到“不重新发明轮子”的解决方案都非常受欢迎,尽管我对这个问题本身也很好奇。
答案 0 :(得分:6)
此代码没有问题
class Bar {
function test($arg1, &$result) {
$result = 'hello';
}
}
$arguments = array('', &$b);
$rc = new ReflectionMethod('Bar', 'test');
$rc->invokeArgs(new Bar, $arguments);
var_dump($b);
打印“你好”,没有警告
你能发布确切的代码吗?