Что эта подпись означает (и) в PHP?

Рассмотрите:

public function & get($name, $default = null)

Почему &?

8
задан Peter Mortensen 5 December 2015 в 15:13
поделиться

3 ответа

В синтаксисе 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

11
ответ дан 5 December 2019 в 07:34
поделиться

Это означает, что он возвращает ссылку на результат, а не на его копию.

Возврат ссылок в PHP

11
ответ дан 5 December 2019 в 07:34
поделиться

Метасимвол передачи PHP по ссылке. См. Передача по ссылке

0
ответ дан 5 December 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: