Передача значень за посиланням
Ви можете передавати змінні в функцію користувача по посиланню, якщо ви хочете дозволити функції модифікувати свої аргументи. У такому випадку, функція користувача зможе змінювати аргументи. Синтаксис такий:
<? Php
function foo (& $var)
{
$var + +;
}
$a = 5;
foo ($a);
// $a тут дорівнює 6
?>
Зауважте, що у виклику функції відсутній знак посилання - він є тільки у визначенні функції. Цього достатньо для коректної передачі аргументів за посиланням.
Ще один цікавий приклад:
<? Php
function funct (& $string)
{
$string .= 'а ця всередині.';
}
$str = 'Цей рядок за межами функції,';
funct ($str);
echo $ str; // Виведе 'Цей рядок за межами функції, а ця всередині.'
?>
За посиланням можна передавати:
- Змінні, наприклад foo ($ a)
- Оператор new, наприклад foo (new foobar ())
- Лінки, які повертаються функцією, наприклад:
<? Php
function & bar ()
{
$a = 5;
return $a;
}
foo (bar ());
?>
Будь-яке інше вираження не повинно передаватися по посиланню, так як результат не визначений. Наприклад, наступна передача за посиланням є неправильною:
<? Php
function bar () // Операція & відсутня
{
$a = 5;
return $a;
}
foo (bar ());
foo ($a = 5); // Вираз, а не змінна
foo (5); // Константа, а не змінна
?>