厳密な警告:変数のみを参照で渡す必要があります


21

次のエラーが表示されます。

厳格な警告:include()の参照によって変数のみを渡す必要があります(/home/sites/dev/theparce/sites/all/themes/parce/block--block--3.tpl.phpの18行目)。

これは、そのエラーの原因となっているブロックコードです。

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

}
else {
  print drupal_render($user_gallery_new);
}

すべてが期待どおりに印刷されても、なぜこのエラーが発生するのですか?

回答:


52

このエラーは、関数がパラメーターとして参照を予期しているが、参照を取得していないときに発生します。

あなたのケースでは、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で通知を生成します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.