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