Рассмотрим:
public function & get($name, $default = null)
Почему &
?
Рассмотрим:
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, и ссылки не должны использоваться для этой цели.
Однако функции, возвращающие ссылки, также не являются абсолютно бесполезными (или плохая практика, когда они не используются для замены ссылок на объекты).
Например, лично я использовал их при создании script, который передает "путь" к функции, которая возвращает ссылку на переменную в этом пути, позволяя мне установить значение для нее и прочитать значение. Из-за рекурсивного характера функции возвращалась эта ссылка.
Это означает, что он возвращает ссылку на результат, а не его копию.
PHP передается по метафайлу. См. Передача по ссылке