Dav*_*ave 3 php reflection pass-by-reference
看起来有点用词不当,因为在PHP 5.3中不推荐使用引用...无论如何,我要做的是使用反射编写单元测试框架,允许您将参数传递给需要引用的方法.例如
class Bar {
function TestMethod($arg1, &$result) {
$result = 'hello';
return true;
}
}
$rc = new ReflectionMethod('Bar', 'TestMethod');
$return_val = $rc->invokeArgs($instance, $arguments);
Run Code Online (Sandbox Code Playgroud)
现在,我在http://www.phwinfo.com/forum/comp-lang-php/273316-how-invoke-reflectionmethod-pass-variable-reference-asargument.html上发现了一个论坛帖子,这让我陷入困境变量引用到我的$ arguments数组中:
$arguments = array('arg1', &$byref_result);
Run Code Online (Sandbox Code Playgroud)
这确实有效但是给出了"不推荐使用:调用时间传递引用已被弃用"错误.我想确保这些代码是向前兼容的,所以如果它们在PHP 6中完全删除它我将不会被搞砸.显然,由于测试框架的不足,我不想重写项目中的任何代码.任何想法或建议?谢谢!:)
PS我试图查看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);
Run Code Online (Sandbox Code Playgroud)
打印"你好",没有警告
你能发布确切的代码吗?
| 归档时间: |
|
| 查看次数: |
2068 次 |
| 最近记录: |