2009-02-27 29 views

Trả lời

29

require yêu cầu, include bao gồm.

Theo hướng dẫn:

require() là giống hệt nhau để bao gồm() trừ khi thất bại nó sẽ tạo ra một lỗi mức E_ERROR gây tử vong. Nói cách khác, nó sẽ tạm dừng tập lệnh trong khi lệnh include() chỉ phát ra cảnh báo (E_WARNING) cho phép tập lệnh tiếp tục.

+0

sử dụng khác, mặc dù :-) – dusoft

+1

Đúng, nhưng điều thú vị sẽ phải hiểu khi sử dụng cái này hay cái kia. – JDelage

0

mỗi http://www.alt-php-faq.org/local/78/:

Không giống như bao gồm(), require() sẽ luôn luôn đọc trong file mục tiêu, thậm chí nếu dòng đó là trên không bao giờ thực hiện. Nếu bạn muốn có điều kiện bao gồm một tệp, hãy sử dụng include(). Câu lệnh điều kiện sẽ không ảnh hưởng đến require(). Tuy nhiên, nếu dòng lệnh require() xảy ra không được thực thi, thì sẽ không có mã nào trong tệp đích được thực thi.

+1

Sự khác biệt duy nhất giữa include() và require() là do lỗi (ví dụ: nếu không tìm thấy tệp), yêu cầu() phát ra lỗi, trong khi include() phát ra cảnh báo. – mjs

3

Sự khác biệt là: bao gồm sẽ không thành công nếu không thể tìm thấy tài nguyên, yêu cầu sẽ. Thành thật mà nói, đó là loại ngớ ngẩn mà bao gồm tồn tại ở tất cả, bởi vì nếu bạn đang cố gắng để tải một nguồn tài nguyên bạn đang khá nhiều đếm trên nó đang có. Nếu bạn định sử dụng bất kỳ thứ gì, tôi khuyên bạn nên sử dụng require_once luôn, theo cách đó bạn không gặp phải xung đột (ví dụ: nếu tập lệnh khác yêu cầu cùng một tệp) và mã của bạn luôn hoạt động như dự định vì bạn biết tài nguyên bao gồm có (nếu không nó bị lỗi).

1

Nếu tệp là tùy chọn, hãy bao gồm tệp. Ví dụ: bạn có thể có tệp 'breaking-news.txt' được tạo khi có tin tức vi phạm nhưng không tồn tại khi không có. Nó có thể được bao gồm mà không có kịch bản phá vỡ nếu không có tin tức vi phạm.

Nếu tệp được yêu cầu cho phần còn lại của tập lệnh hoạt động đúng, yêu cầu tệp đó.

4

Như những người khác đã nói, nếu "yêu cầu" không tìm thấy tệp mà nó đang tìm kiếm, việc thực thi sẽ dừng lại. Nếu bao gồm không tập tin nó đang tìm kiếm, thực hiện sẽ tiếp tục.

Nói chung, yêu cầu phải được sử dụng khi nhập thư viện mã/lớp/hàm. Nếu bạn cố gắng gọi một hàm, khởi tạo một lớp, vv và các định nghĩa không có ở đó, những điều xấu sẽ xảy ra. Do đó, bạn yêu cầu php để bao gồm tệp của bạn và nếu không thể, bạn dừng lại.

Sử dụng bao gồm khi bạn đang sử dụng PHP để xuất nội dung hoặc nếu không thực thi mã, nếu nó không chạy, sẽ không nhất thiết phải hủy mã sau đó. Ví dụ kinh điển về điều này là thực hiện một khung nhìn trong khung công tác Model/View/Controller. Không có gì mới nên được định nghĩa trong một khung nhìn, cũng không nên thay đổi trạng thái ứng dụng. Vì vậy, nó là ok để sử dụng bao gồm, bởi vì một thất bại sẽ không phá vỡ những thứ khác xảy ra trong ứng dụng.

Một ốp nhỏ. Có rất nhiều thông tin xung đột và thông tin sai lệch liên quan đến hiệu suất của bao gồm so với yêu cầu so với require_once so với include_once. Chúng thực hiện hoàn toàn khác nhau trong các tình huống/trường hợp sử dụng khác nhau. Đây là một trong những nơi mà bạn thực sự cần đánh giá sự khác biệt trong ứng dụng của riêng bạn.

+0

Cảm ơn bạn đã cung cấp trường hợp sử dụng để bao gồm. Tôi không thể hiểu khi nào sử dụng nó trước đây. – JDelage

0

Trong ngôn ngữ đơn giản nếu chúng tôi sử dụng yêu cầu, chúng tôi phải chắc chắn rằng tệp tồn tại trong thời đại đó trong khi không cần thiết trong trường hợp bao gồm.Nhưng hãy cố gắng đảm bảo tệp tồn tại.

-1

Require()include() giống nhau đối với việc xử lý lỗi. Tuy nhiên, require() dẫn đến lỗi nghiêm trọng và không cho phép xử lý trang. tức là bao gồm sẽ cho phép tập lệnh tiếp tục.

+0

cả hai 'include' và' require' là ** cấu trúc ngôn ngữ **. Họ không sử dụng dấu ngoặc đơn. – Jimbo

0
Include and require are identical, except upon failure: 

require will produce a fatal error (E_COMPILE_ERROR) and stop the script 
include will only produce a warning (E_WARNING) and the script will continue 

Bạn có thể hiểu bằng examle bao gồm ("test.php"); echo "\ nĐường này sẽ được in";

Output: Cảnh báo: include (test.php): thất bại trong việc mở dòng: Không có tập tin hoặc thư mục trong/var/www/........ Dòng này sẽ được in

yêu cầu ("test.php"); echo "\ nĐường này sẽ được in"; Cảnh báo: yêu cầu (test.php): không mở được luồng: Không có tệp hoặc thư mục nào trong/var/www/....

Các vấn đề liên quan