【发布时间】:2012-02-10 11:07:17
【问题描述】:
我查看了Is it possible to pass parameters by reference using call_user_func_array()? 和http://php.net/manual/en/function.call-user-func-array.php。使用 call_user_func_array() 通过引用传递的批准技术似乎是通过使参数数组成为变量引用的数组。例如,设置$parameters = array( &$some_variable)。我的问题是,我们是否可以将参数数组改为变量数组(不是引用),并将整个参数数组作为引用传递?如下图所示:
function toBeCalled( &$parameter1, $parameter2 ) {
//...Do Something...
}
$changingVar = 'passThis';
$changingVar2 = 'passThisToo';
$parameters = array( $changingVar, $changingVar2 );
call_user_func_array( 'toBeCalled', &$parameters );
请注意,toBeCalled 函数期望第一个变量作为引用,第二个变量作为值。我问的原因是因为这里的语法很方便,而且似乎可以工作(请参阅这个 PHP 5.3 补丁,了解 Drupal 的 DruTex 模块 - http://drupal.org/node/730940#comment-4054054),但我只是在检查专家的想法。
【问题讨论】:
-
使用第一个版本,因为它有效。后者甚至不适用于 PHP 5.3(或者您的示例对您有用吗?),并且无论如何都将被 PHP 5.4 禁止(用于强制传递引用的 Zend memleaks)。
标签: php parameter-passing pass-by-reference