Рассмотрите:
public function & get($name, $default = null)
Почему &
?
В синтаксисе 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
Это означает, что он возвращает ссылку на результат, а не на его копию.
Метасимвол передачи PHP по ссылке. См. Передача по ссылке