似乎用词不当,因为在 PHP 5.3 中不推荐使用引用传递...无论如何,我想做的是使用反射编写一个单元测试框架,它允许您将参数传递给需要的方法一个引用。例如
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 中完全删除它,我就不会被搞砸了。显然,我不想因为我的测试框架的不足而不得不重写我的项目中的任何代码。有什么想法或建议吗?谢谢! :)
附言我试图查看 phpunit 的文档以查看它是否可以执行此操作,但该站点目前似乎已关闭。任何指向“不要重新发明轮子”解决方案的链接都非常受欢迎,尽管我也对这个问题本身感到好奇。
最佳答案
这段代码没有问题
class Bar {
function test($arg1, &$result) {
$result = 'hello';
}
}
$arguments = array('', &$b);
$rc = new ReflectionMethod('Bar', 'test');
$rc->invokeArgs(new Bar, $arguments);
var_dump($b);
打印“你好”,没有警告
你能发布你的确切代码吗?
关于php - 通过引用将参数可移植地传递给 PHP 的 ReflectionMethod::invokeArgs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1902339/