it-swarm-vi.com

Cảnh báo nghiêm ngặt: Chỉ các biến nên được truyền bằng tham chiếu

Tôi nhận được lỗi sau đây:

Cảnh báo nghiêm ngặt: Chỉ nên chuyển các biến bằng tham chiếu trong tệp bao gồm () (dòng 18 của /home/sites/dev/theparce/sites/all/theme/parce/block--block--3.tpl.php).

Đây là mã khối gây ra lỗi đó.

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

}
else {
  print drupal_render($user_gallery_new);
}

Tại sao tôi nhận được lỗi đó, ngay cả khi tôi nhận được tất cả được in như mong đợi?

21
silkAdmin

Lỗi đó xảy ra khi một hàm đang mong đợi một tham chiếu là tham số, nhưng nó không nhận được tham chiếu.

Trong trường hợp của bạn, render() được định nghĩa là render(&$element), nhưng node_show() được định nghĩa là node_show($node, $message = FALSE) , không phải &node_show($node, $message = FALSE).
[.__.] Điều tương tự cũng đúng với drupal_render() , vì hàm được định nghĩa là drupal_render(&$elements).

Như đã giải thích trên Chuyển qua tham chiế , khi một hàm yêu cầu tham số tham chiếu, bạn có thể chuyển đến hàm:

  • Các biến (ví dụ: một biến tạm thời chứa kết quả của hàm không trả về tham chiếu)

  • Tài liệu tham khảo được trả về từ các chức năng

Sử dụng các biểu thức khác, kết quả không được xác định và nó phụ thuộc vào phiên bản PHP.

  • render(node_show()) tạo ra lỗi nghiêm trọng trong PHP 5.0.5, thông báo tiêu chuẩn nghiêm ngặt trong PHP 5.1.1 và thông báo trong PHP 7.0 .0

  • render(5) tạo ra lỗi nghiêm trọng

  • render(new DateTime()) tạo thông báo trong PHP 7.0.7

52
kiamlaluno