Помимо передачи аргументов функции по ссылке имеется возможность
вернуть ссылку как результат вызова функции. Это может быть необходимо при
дальнейшем использовании ссылок в коде программы. Данная технология
применяется достаточно редко и требует особой аккуратности. Ссылка указывает на то же место в памяти, которое занимает исходная переменная. Для создания ссылки используется оператор &
:
$value = 5 ;
$ref = &$value;
Теперь $ref
является ссылкой на переменную $value
. Изменение значения
ссылки немедленно отражается на значении исходной переменной.
Для описания функции, которая возвращает ссылку как результат своего
вызова, также используется символ &
. Пусть требуется разработать простейшую функцию, которая просто возвращает ссылку на переданную ей в качестве аргумента переменную. Для этого аргумент тоже следует передавать по ссылке:
function &return_a_reference (&$reference)
{
return $reference;
}
Следует обратить внимание на то, что символ &
в описании функции
использован дважды.
При вызове функции, возвращающей ссылку, следует также использовать
оператор &
. Ниже приведен пример, который присваивает переменной $ref
ссылку на переменную $value
и увеличивает значение ссылки, изменяя этим
также и значение исходной переменной:
$value = 5;
echo "Старое значение: ", $value, "\n";
$ref = & return_a_reference ($value);
$ref++;
echo "Новое значение: ", $value, "\n";
В результате выполнения этого фрагмента будут отображены следующие строки:
Старое значение: 5
Новое значение: б