Strikte Warnung: Nur Variablen sollten als Referenz übergeben werden

21

Ich erhalte folgenden Fehler:

Strikte Warnung: In include () sollten nur Variablen als Referenz übergeben werden (Zeile 18 von /home/sites/dev/theparce/sites/all/themes/parce/block--block--3.tpl.php).

Dies ist der Blockcode, der diesen Fehler verursacht.

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

}
else {
  print drupal_render($user_gallery_new);
}

Warum erhalte ich diesen Fehler, obwohl alles wie erwartet gedruckt wird?

silkAdmin
quelle

Antworten:

52

Dieser Fehler tritt auf, wenn eine Funktion eine Referenz als Parameter erwartet, aber keine Referenz abruft.

In Ihrem Fall render()ist definiert als render(&$element), aber node_show()definiert als node_show($node, $message = FALSE), nicht &node_show($node, $message = FALSE).
Gleiches gilt für drupal_render(), da die Funktion definiert ist als drupal_render(&$elements).

Wenn eine Funktion einen Referenzparameter benötigt, können Sie, wie im Abschnitt Referenzübergabe erläutert, Folgendes an die Funktion übergeben:

  • Variablen (z. B. eine temporäre Variable, die das Ergebnis einer Funktion enthält, die keine Referenz zurückgibt)

  • Von Funktionen zurückgegebene Referenzen

Bei Verwendung anderer Ausdrücke ist das Ergebnis undefiniert und hängt von der PHP-Version ab.

  • render(node_show()) erzeugt einen schwerwiegenden Fehler in PHP 5.0.5, einen Hinweis auf strenge Standards in PHP 5.1.1 und einen Hinweis in PHP 7.0.0

  • render(5) erzeugt einen schwerwiegenden Fehler

  • render(new DateTime()) erzeugt einen Hinweis in PHP 7.0.7

kiamlaluno
quelle