Можем ли мы передать массив параметров по ссылке на call_user_func_array () вместо передачи массива ссылок на переменные? - PullRequest
1 голос
/ 14 января 2012

Я смотрел на Можно ли передать параметры по ссылке с помощью 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 для модуля DruTex для Drupal - http://drupal.org/node/730940#comment-4054054),, но я просто проверяю, что об этом думают эксперты.

1 Ответ

0 голосов
/ 15 января 2012

Вы не можете, потому что, когда вы помещаете вещи в массив не по ссылке, они копируются. Поэтому независимо от того, что вы будете делать с массивом впоследствии, это не повлияет на исходные переменные, которые вы ввели (если они даже были переменными для начала).

То, на что вы ссылались, кажется неуместным. Это убирает бессмысленную передачу вызовов по ссылке.

...