Что означает «&» здесь в PHP? - PullRequest
14 голосов
/ 17 июня 2009

Рассмотрим этот код PHP:

call_user_func(array(&$this, 'method_name'), $args);

Я знаю, что это означает передачу по ссылке при определении функций, но действительно ли это при вызове функции?

Ответы [ 3 ]

14 голосов
/ 17 июня 2009

Со страницы Передача по ссылке Страница документов:

Вы можете передать переменную по ссылке к функции, чтобы функция могла изменить переменную. Синтаксис как следующим образом:

<?php
function foo(&$var)
{
    $var++;
}

$a=5;
foo($a);
// $a is 6 here
?>

... В последних версиях PHP вы будете получить предупреждение о том, что "время звонка передача по ссылке "устарела, когда вы используете & в foo (& $ a);

0 голосов
/ 25 марта 2018
call_user_func(array(&$this, 'method_name'), $args);

Этот код генерирует Примечание: неопределенная переменная: this

Вот правильный пример:

<?php
 error_reporting(E_ALL);
function increment(&$var)
{
    $var++;
}

$a = 0;
call_user_func('increment', $a);
echo $a."\n";

// You can use this instead
call_user_func_array('increment', array(&$a));
echo $a."\n";
?>
The above example will output:

0
1
0 голосов
/ 17 июня 2009

Это передача по ссылке.

1003 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...