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

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

Репутация: +1081/-14
Offline Offline

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


тружусь даже во сне...


« : 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.16 | 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