Еще в ноябре 2005 года на встрече в Париже разработчики обсудили новые возможности следующей, шестой, версии PHP. Интересует ли Вас, какой будет эта версия? Примите участие в опросе, который проводится на сайте рассылки.
[опрос на английском языке: PHP 6: Are you interesting in? (PHP 6: Вы зантересованы?) - YES (ДА) - NO (НЕТ)]
PHP 5 для начинающих
Передача данных по ссылке
Аннотация
Передача данных в функцию по ссылке.
Обычно данные передаются в функцию по значению (by value). Это означает, что функция получает не саму передаваемую величину, а ее копию. Как следствие - изменения полученной копии внутри функции никак не влияют на оригинальную величину.
Однако, данные могут передаваться не только по значению, но и по ссылке (by reference). Для этого перед аргументом в объявлении функции необходимо поставить знак &. В этом случае функция уже получает непосредственный доступ к величине. Изменения величины внутри функции оказываются действенными и вне ее.
Пользоваться передачей данных по ссылке следует с большой осторожностью, так как случайное изменение их внутри функции может привести к непредсказуемым результатам.
При передаче данных по ссылке можно использовать только переменные. Попытка передать константу или явно указанную величину приведет к возникновению фатальной ошибки.
function foo(&$arg)
{
$arg++;
}
foo(1);
Fatal error: Only variables can be passed by reference
Замечание
Можно передавать данные по ссылке и указывая знак & перед передаваемой переменной при вызове функции (а не в ее объявлении)[1]. Однако, такой способ считается устаревшим и поддерживается только для совместимости с более ранними версиями. Пользоваться им во вновь создаваемых приложениях не следует.
function foo($arg)
{
$arg++;
}
$x = 1;
foo(&$x);
Warning: Call-time pass-by-reference has been deprecated...
[2] PHP 5 Power Programming. AndiGutmans, StigBakken, and DerickRethans. Prentice Hall PTR. www.phptr.com. Copyright
2005 Pearson Education, Inc..
[1] В зависимости от значения директивы allow_call_time_pass_reference в файле php.ini данные либо действительно будут переданы по ссылке, либо, вопреки намерению программиста, по значению.