Учебник РНР
Назад Глава 14. Ссылки. Разъяснения. Вперёд

Передача по ссылке

Вы можете передать переменную в функцию по ссылке, и функция сможет модифицировать свои аргументы. Синтаксис таков:

function foo (&$var)
{
    $var++;
}

$a=5;
foo ($a);
// $a здесь равно 6

Заметьте, что в функции отсутствует знак ссылки - он есть только в определении функции. Одного определения функции достаточно для корректной передачи аргументов по ссылке.

По ссылке можно передавать:

  • переменные, например, foo($a)

  • оператор new, например, foo(new foobar())

  • ссылку, возвращённую из функции, например:

    function &bar()
    {
        $a = 5;
        return $a;
    }
    foo(bar());

    См. также разъяснения возвращения по ссылке.

Любое другое выражение не должно передаваться по ссылке, так как результат не определён/undefined. Например, следующий передача по ссылке является неправильной:

function bar() // отсутствует &
{
    $a = 5;
    return $a;
}
foo(bar());

foo($a = 5) // выражение, не переменная
foo(5) // константа, не переменная

Это требования для PHP 4.0.4 и позднее.


Назад Оглавление Вперёд
Чем ссылки не являются Вверх Возвращение по ссылке