Забобрить эту страницу!
Форум русской поддержки Joomla! CMS
11.03.2010, 02:37:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Репутация: +759/-13
Offline Offline

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


я все вижу...


Просмотр профиля WWW
« : 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);
Записан

Новости Joomla | Joomla 1.5 FAQ | Joomla 1.0 FAQ | Где скачать шаблоны Joomla
Поддержите разработку JComments: Z614614405453 | R042036642670 | U276700821607
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

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