Передача значень за посиланням

 

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

<? 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); // Константа, а не змінна 
?>