LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
21.05.2013, 13:46:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 2.5 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Что означает ошибка: "Only variables can be passed by reference in ..."  (Прочитано 19761 раз)
0 Пользователей и 1 Гость смотрят эту тему.
smart
Администратор
*******

Репутация: +1206/-14
Online Online

Пол: Мужской
Сообщений: 7573


снова дома...


« : 16.06.2007, 12:27:54 »

Начиная с версии PHP 5.0.5, а также 5.1, разработчики PHP усилили требования к коду. В частности, это касается работы функций, принимающих в качестве аргументов - ссылки на переменные, массивы и т.п.

Приведенный ниже код, нормально работающий на PHP 4.4, начиная с версии PHP 5.0.5 выдает сообщение об ошибке вида: Fatal error: Only variables can be passed by reference in....

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

echo 
Foo(Bar());

Теперь при вызове функции Foo(), требующей передачи ей ссылки на переменную (для непосредственной ее модификации в функции) с аргументом, являющимся другой функцией, PHP 5.0.5 отказывается выполнять этот код и выдает соответствующее сообщение об ошибке.

Для решения данной проблемы необходимо немного видоизменить код, вводя временную переменную. Правильный (и к тому же работающий на PHP 5.0.5, а также 5.1) вызов функции выглядит так:

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

$tmp_var Bar();
echo 
Foo($tmp_var);
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.18 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet