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