Что означает ошибка «Only variables can be passed by reference»?


При поддержке старых проектов, которые писались под старые версии php иногда можно встретить следующую ошибку: «Only variables can be passed by reference». Сейчас на простом примере покажу, почему она появляется.

Простой пример, который вызовет данную проблему:

function Foo(&$data) {
  // do some code with $data
}
  
function Bar() {
  return "Hello world";
}

echo Foo(Bar());

А теперь код, который отработает правильно:

function Foo(&$data) {
  // do some code with $data
}
  
function Bar() {
  return "Hello world";
}

$tmp_var = Bar();
echo Foo($tmp_var);

Видите разницу? Разница в том, что нельзя передать по ссылке аргумент, который напрямик возвращает другая функция.

Во втором примере работа функции Bar() сохраняется в переменную, которая далее уже передается по ссылке в функцию Foo().

Вот и весь секрет. : )

,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *