Строгое предупреждение: только переменные должны передаваться по ссылке

Я получаю следующую ошибку:

  

Строгое предупреждение: только переменные должны передаваться по ссылке в include () (строка 18 из /home/sites/dev/theparce/sites/all/themes/parce/block--block--3.tpl.php) .

Это код блока, который вызывает эту ошибку.

if ($user_gallery) {
  print render(node_show($user_gallery));  // Line 18
  print drupal_render ($user_gallery_edit);

}
else {
  print drupal_render($user_gallery_new);
}

Почему я получаю эту ошибку, даже если я все напечатаю как ожидалось?

7
19 голосов | спросил silkAdmin 4 J000000Monday11 2011, 07:30:03

1 ответ


51

Эта ошибка возникает, когда функция ожидает ссылку как параметр, но не получает ссылку.

В вашем случае render() определяется как render(&$element), но node_show() определяется как node_show($node, $message = FALSE), а не &node_show($node, $message = FALSE).
То же самое можно сказать и о drupal_render() , поскольку функция определена как drupal_render(&$elements).

Как объяснено в передаче по ссылке , когда требуется функция контрольный параметр, вы можете перейти к функции:

  • Переменные (например, временная переменная, содержащая результат функции, которая не возвращает ссылку)

  • Ссылки, возвращаемые функциями

Используя другие выражения, результат не определен, и это зависит от версии PHP.

  • render(node_show()) создает фатальную ошибку в PHP 5.0.5, строгое уведомление стандартов в PHP 5.1.1 и уведомление в PHP 7.0.0

  • render(5) создает фатальную ошибку

  • render(new DateTime()) выводит уведомление в PHP 7.0.7

ответил kiamlaluno 4 J000000Monday11 2011, 20:45:22

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132