Замечание: Обратите внимание, что параметры для call_user_func() не могут передаваться по ссылке.
<?php
error_reporting(E_ALL);
function increment(&$var)
{
$var++;
}
$a = 0;
call_user_func('increment', $a);
echo $a."\n";
call_user_func_array('increment', array(&$a)); // You can use this instead before PHP 5.3
echo $a."\n";
?>
The above example will output:
0
1
А это уже от меня лично:
Необязательно так заморачиваться через массив. По крайней мере в PHP 5.2 работает простое решение с "&"
call_user_func('increment', &$a);
echo $a; // output 1
То есть это тот случай когда не работает правило достаточно указать & только в описании функции, при вызове указывать не надо.
У кого есть под рукой установленный PHP 5.3 — проверьте будет ли он выдавать Warning "deprecated" в моем примере. Пожалуйста!