Tại sao lõi sử dụng in chứ không phải echo?


24

Tôi đã đọc ở đâu đó và tôi không nhớ là ở đâu, đó echolà cách xuất dữ liệu hiệu quả hơn sau đó print.

Tại sao lõi Drupal sử dụng printnhiều như vậy? Có bất kỳ lý do đặc biệt đằng sau đó?


1
Trên một sidenote: print sẽ luôn trả về 1 dưới dạng giá trị, echo sẽ không trả về bất cứ thứ gì. Tôi đoán rằng có thể hữu ích trong một số trường hợp.
Bart

Những loại trường hợp có thể là?
jayarjo

Tôi cũng đã tự hỏi điều đó! Câu hỏi hay!
aendrew

Câu trả lời:


25

echochỉ nhanh hơn trong môi trường học thuật. Sự khác biệt là rất ít. Một điểm chuẩn nhanh tôi vừa thực hiện: Thời gian tìm nạp một hàng từ một bảng có hơn 2000 nút là 1 đơn vị.

Để có được sự cải thiện 1 đơn vị, tôi sẽ cần thay thế khoảng 3.700.000 (hơn 3 triệu) printbáo cáo bằng echo. Nói cách khác, nếu bạn muốn cải thiện hiệu suất, đây không phải là nơi để bắt đầu.

Nhìn thấy printcó thể được sử dụng trong một phạm vi rộng hơn nhiều trường hợp sau đó echo, lần đầu tiên có một số lợi thế. Nó để lại cho bạn ba tùy chọn:

  • Luôn luôn sử dụng print
  • Sử dụng echokhi có thể và dự phòngprint
  • Sử dụng echoluôn và cấu trúc lại mã của bạn nếu echokhông thể sử dụng, để sử dụng nó

Drupal đã mặc định đầu tiên.

Để trả lời câu hỏi thực tế của bạn là tại sao điều này được chọn: Nó không phải là. Nó chỉ đơn giản là phát triển theo cách này.


Bạn có thể cung cấp một ví dụ về khi echo không thể được sử dụng? Chỉ là tôi không thể tưởng tượng bất cứ lúc nào.
jayarjo

6
Rõ ràng nhất là if (! print some_method() ) {print some_other_method()}. Vì bản in trả về một TRUE nếu nó thực sự in một cái gì đó. Echo không trả về gì cả, đó là lý do tại sao nó cũng nhanh hơn. Một ví dụ khác bạn sẽ thấy là return print $somevalueở cuối phương thức để trả về trạng thái.
berkes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.