Passing by Reference

Оновлено: 11.05.2023

Ви можете передати змінну за посиланням у функцію, щоб функція могла модифікувати змінну. Синтаксис наступний:

<?php
function foo(&$var)
{
    $var++;
}

$a=5;
foo($a);
// $a is 6 here
?>

Зауваження: На виклику функції немає знаку посилання - тільки на визначенні функції. Для коректної передачі аргументу за посиланням достатньо лише визначення функції.

Наступні речі можуть бути передані за посиланням:

Змінні, тобто foo($a) Посилання, що повертаються з функцій, тобто: <?php function foo(&$var) { $var++; } function &bar() { $a = 5; return $a; } foo(bar()); ?> Дізнайтеся більше про повернення за посиланням.

Посилання, що повертаються з функцій, тобто:

<?php
function foo(&$var)
{
    $var++;
}
function &bar()
{
    $a = 5;
    return $a;
}
foo(bar());
?>

Ніякі інші вирази не можна передавати за посиланням, оскільки результат буде невизначеним. Наприклад, наведені нижче приклади передачі за посиланням є некоректними:

<?php
function foo(&$var)
{
    $var++;
}
function bar() // Note the missing &
{
    $a = 5;
    return $a;
}
foo(bar()); // Produces a notice

foo($a = 5); // Expression, not variable
foo(5); // Produces fatal error

class Foobar
{
}

foo(new Foobar()) // Produces a notice as of PHP 7.0.7
                  // Notice: Only variables should be passed by reference
?>