При поддержке старых проектов, которые писались под старые версии 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().
Вот и весь секрет. : )