Передача по Ссылке
Передача по ссылке
Вы можете передать переменную в функцию по ссылке, и функция сможет модифицировать свои аргументы. Синтаксис таков:
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 и позднее.