Проблема с передачей функции параметра как reference

  • Автор темы Автор темы Khan
  • Дата начала Дата начала

Khan

Guest
Проблема с передачей функции параметра как reference

Натолкнулся на камень. Очень нужна функция, которая будет вызывать другую функцию, которой необходимо передать параметр как reference. call_user_func() отказался работать. Тут же спрашивается, почему?

Если у кого-нибудь есть соображения по этому поводу, то очень прошу поделиться решением.

И ещё... я начал было функцию вызова писать, но вот функции, которая бы возвращала имена всех переменных, переданной функции не нашёл. Это тоже, видимо, ещё один камень.

Простенький пример на тему:
PHP:
function foo(&$var)
{
	$var=!$var;
}

$a=false;
foo($a); // это работает, of course
call_user_func('foo', $a); // а вот это нет, т.е. данные передались как value.

Спасибо.
 
Это будет работать только с allow_call_time_pass_reference = On, который по дефолту Off.
 
Автор оригинала: tony2001
PHP:
function foo(&$var) 
{ 
    $var=!$var; 
} 

$a=false; 
$function = 'foo';
$function($a);
Это очевидно. Но если неизвестно кол-во передаваемых параметров?
 
например, переделать функции так, чтобы можно было передавать массив параметров.
 
Автор оригинала: tony2001
например, переделать функции так, чтобы можно было передавать массив параметров.
Они пройдут как value. Уже писал такую функцию - на практике оказалось именно так.
 
PHP:
function foo(&$var) 
{ 
    $var[0]++;
} 

$b = 0;
$a = Array (&$b); 

foo($a); 

call_user_func('foo', $a);

var_dump($b);
var_dump($a);
вот это работает как надо.
или мне кажется?
 
Сверху