it-swarm-eu.dev

Přísné varování: Reference by měly být předávány pouze proměnné

Zobrazila se následující chyba:

Přísné varování: Odkazem by měly být předávány pouze proměnné () (řádek 18 v /home/sites/dev/theparce/sites/all/themes/parce/block--block--3.tpl.php).

Toto je blokový kód, který tuto chybu způsobuje.

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

}
else {
  print drupal_render($user_gallery_new);
}

Proč se mi tato chyba zobrazuje, i když mám všechny vytištěné podle očekávání?

21
silkAdmin

K této chybě dochází, když funkce očekává odkaz jako parametr, ale nedostává odkaz.

Ve vašem případě je render() definováno jako render(&$element), ale node_show() je definováno jako node_show($node, $message = FALSE), nikoli &node_show($node, $message = FALSE).
Totéž by platilo pro drupal_render() , protože funkce je definována jako drupal_render(&$elements).

Jak je vysvětleno na Passing by Reference , pokud funkce vyžaduje referenční parametr, můžete předat funkci:

  • Proměnné (například dočasná proměnná obsahující výsledek funkce, která nevrací odkaz)

  • Odkazy vrácené z funkcí

Při použití jiných výrazů není výsledek definován a závisí na verzi PHP verze).

  • render(node_show()) vytváří závažnou chybu v PHP 5.0.5, přísné standardy v PHP 5.1.1) a oznámení v = PHP 7.0.0

  • render(5) způsobí závažnou chybu

  • render(new DateTime()) vytvoří oznámení v PHP 7.0.7

52
kiamlaluno