В синтаксисе PHP это означает, что функция возвращает ссылку, а не значение. Например:
<?php
$foo = 'foo';
function & get_foo_ref ()
{
global $foo;
return $foo;
}
// Get the reference to variable $foo stored into $bar
$bar = & get_foo_ref();
$bar = 'bar';
echo $foo; // Outputs 'bar', since $bar references to $foo.
?>
В приведенном выше примере удаление &
из объявления функции приведет к тому, что переменная $foo
по-прежнему будет содержать 'foo', поскольку функция возвращает только значение, а не ссылку.
Это чаще использовалось в PHP4, потому что он не передавал объекты по их ссылке и клонировал их. Из-за этого переменные объекта должны были передаваться по ссылке, чтобы избежать нежелательного клонирования. Это больше не относится к PHP5, и ссылки не должны использоваться для этой цели.
Однако функции, которые возвращают ссылки, также не являются полностью бесполезными (или плохой практикой, когда они не используются для замены ссылок на объекты).
Например, лично я использовал их при создании сценария, который передает «путь» в функцию, которая возвращает ссылку на переменную в этом пути, позволяя мне установить для нее значение и прочитать значение. Из-за рекурсивного характера функции возвращение ссылки было необходимо.
By Rithiur