я наткнулся на следующее утверждение из PHP ManualФункция. Передача по ссылке
Следующие вещи могут быть переданы по ссылке:
переменных, т.е. Foo ($ а)
Новые заявления , т.е. foo (новый foobar())
Ссылки, возвращаемые с функций, т.е.
А вот пример того, что не работает:
<?php
function foo(&$var)
{
$var++;
}
function bar()
{
$a = 5;
return $a;
}
foo(bar());
Я пытаюсь понять, почему это не работает.
bar() возвращает значение '5' по значению, которое ссылается на foo(), поэтому почему PHP не допускает такого поведения?
Является ли это связано с этой выдержке из руководства:
Никакие другие выражения не должны передаваться по ссылке, так как результат не определен. Например, следующие примеры прохождения по ссылке недействительны
Однако для меня это не имеет смысла, так как, бар() возвращает фактическое значение, не определено.
Что такое '5', который возвращается из bar()? Это просто ценность. Это не переменная, которая может быть передана по ссылке на foo(). Это значение, ожидающее присвоения некоторой переменной, и только тогда будет иметь ссылку. –
Да, но обычно, когда вы проходите по ссылке, вы хотите продолжать использовать ее (используя переменную). P.S: Путем 5.3+ (или smth), проходящего по ссылке, удаляется (для переменных) –
@KA_lin - __call time__ pass by reference устарел в 5.3 (и удален в 5.4); __pass by reference__ все еще разрешен –