Нубовопрос: что обозначает конструкция &$ в php (и php ли это вообще?)

ariran

Новичок
добрый день. в одном из модулей Drupal7 имеется вот такой кусок кода
PHP:
/**
 * Post render a view and replace any advanced forum tokens.
 */
function advanced_forum_views_post_render(&$view, &$output) {
  if (!$view->style_plugin->uses_row_plugin()) {
    return;
  }
интересует момент с символом & в строчке function advanced_forum_views_post_render(&$view, &$output) для чего он там и что он делает (в смысле какую функцию он выполняет)?
 

ariran

Новичок
это передача переменной по ссылке
с такой конструкцией модуль не работает и выдает ошибку:
Fatal error: Call to a member function uses_row_plugin() on a non-object in Z:\home\aaa.final\www\sites\all\modules\advanced_forum\advanced_forum.module on line 535 (это вот как раз строка с &$view, &$output

погуглив такую ошибку я вычитал следующее:
Если эта ошибка появилась перед вашими глазами, значит, сейчас в той строке, номер которой написан в тексте сообщения об ошибке, не объект. Даже если нам очень хочется, чтоб там был объект и мы всё для этого сделали - ошибка есть и это не объект.
при этом если поставить тот же модуль на другом хостинге, то все работает. а в нашем случае (на локальном денвере и на другом хостинге) модуль начинает работать если & из кода убрать. соответственно второй вопрос может ли эта ошибка зависеть от версии php на хостинге (на всех хостингах версия 5, но есть отличия в "номере" 5.18, 5.21
 

ariran

Новичок
пофиксили заменой строки
if (!$view->style_plugin->uses_row_plugin())
на
if (empty($view->style_plugin) || !$view->style_plugin->uses_row_plugin())

он там считывал информацию стилей и где стили не были прописаны во вьюсах выдавал эту ошибку

ушел читать про дебаг...
 

AmdY

Пью пиво
Команда форума
ariran
у вас проблема не в этой функции. а там где она вызывается. там передаётся неверный параметр, который принимается как $view.
для отладки нужно использовать дебагер или функцию debug_print_backtrace на пустое $view
 
Сверху