如何传递对call_user_func的引用?

Ala*_*blo 19 php reference callback

请考虑以下示例:

function myTest(&$var)
{ 
    $var++;
    echo "var = {$var}\n";
}

$x = 42;
call_user_func('myTest', $x);
Run Code Online (Sandbox Code Playgroud)

它显示警告:

警告:参数1到myTest()应该是一个引用,在/home/alain/workspace/echo/echo.php(57)中给出的值:第7行的eval()代码

注意:代码写在在线沙箱上,解释了eval.

知道如何传递对call_user_func家庭功能的参考吗?

Ala*_*blo 35

我在PHP手册上找到了答案:

注意:

请注意,call_user_func()的参数不通过引用传递.

他们还提供了完成工作的诀窍:

$x = 42;
call_user_func_array('myTest', array(&$x));
Run Code Online (Sandbox Code Playgroud)

  • 你很快就回答了这个问题:-) (6认同)
  • @T.Todua 这实际上通过使用数组文字或直接变量(没有 `&`)而不是像 `call_user_func('myTest', &$x);` 这样的不正确的东西来专门避免调用时传递引用。函数签名仍然必须有一个引用参数,这确保了函数操作的变量仍然是同一个变量,而不是“call_user_func”创建的副本。 (2认同)