Các tệp được đưa vào dựa trên đường dẫn tệp được cung cấp hoặc, nếu không có đường dẫn nào được cung cấp, thì đường dẫn được chỉ định. Nếu tệp không được tìm thấy trong , thì cuối cùng, include
sẽ kiểm tra thư mục riêng của tập lệnh gọi và thư mục làm việc hiện tại trước khi thất bại. Cấu trúc include
sẽ phát ra một E_WARNING
nếu nó không thể tìm thấy tệp;
Lưu ý rằng cả include
và require
đều tăng thêm các E_WARNING
, nếu tệp không thể truy cập được, trước khi tăng lần lượt 2 hoặc 3 cuối cùng
Nếu một đường dẫn được xác định — cho dù là tuyệt đối [bắt đầu bằng ký tự ổ đĩa hoặc include
0 trên Windows, hoặc include
1 trên hệ thống Unix/Linux] hoặc liên quan đến thư mục hiện tại [bắt đầu bằng include
2 hoặc include
3] — thì đường dẫn đó sẽ bị bỏ qua hoàn toàn. Ví dụ: nếu tên tệp bắt đầu bằng include
4, trình phân tích cú pháp sẽ tìm trong thư mục mẹ để tìm tệp được yêu cầu
Để biết thêm thông tin về cách PHP xử lý tệp bao gồm và đường dẫn bao gồm, hãy xem tài liệu về
Khi một tệp được bao gồm, mã chứa trong đó sẽ kế thừa phạm vi biến của dòng mà việc bao gồm xảy ra. Mọi biến có sẵn tại dòng đó trong tệp đang gọi sẽ có sẵn trong tệp được gọi, kể từ thời điểm đó trở đi. Tuy nhiên, tất cả các hàm và lớp được định nghĩa trong tệp đi kèm đều có phạm vi toàn cầu
Ví dụ #1 Ví dụ cơ bản về include
include
6
include
7
include
8
include
9
include
0
include
1
include
2
include
8
Nếu việc bao gồm xảy ra bên trong một hàm trong tệp gọi, thì tất cả mã có trong tệp được gọi sẽ hoạt động như thể nó đã được xác định bên trong hàm đó. Vì vậy, nó sẽ tuân theo phạm vi biến của hàm đó. Một ngoại lệ đối với quy tắc này là các hằng số ma thuật được trình phân tích cú pháp đánh giá trước khi bao gồm xảy ra
Ví dụ #2 Bao gồm trong các chức năng
include
4
include
5
include
6
include
7
include
8
include
8
Khi một tệp được bao gồm, quá trình phân tích cú pháp sẽ thoát khỏi chế độ PHP và chuyển sang chế độ HTML ở phần đầu của tệp đích và tiếp tục lại ở phần cuối. Vì lý do này, bất kỳ mã nào bên trong tệp đích sẽ được thực thi dưới dạng mã PHP phải được đặt trong các thẻ bắt đầu và kết thúc PHP hợp lệ
Nếu "" được bật trong PHP, bạn có thể chỉ định tệp được bao gồm bằng URL [thông qua HTTP hoặc trình bao bọc được hỗ trợ khác - xem Giao thức và Trình bao bọc được hỗ trợ để biết danh sách các giao thức] thay vì tên đường dẫn cục bộ. Nếu máy chủ đích diễn giải tệp đích dưới dạng mã PHP, các biến có thể được chuyển đến tệp được bao gồm bằng cách sử dụng chuỗi yêu cầu URL như được sử dụng với HTTP GET. Điều này không hoàn toàn giống với việc bao gồm tệp và để nó kế thừa phạm vi biến của tệp mẹ;
Ví dụ #3 include
thông qua HTTP
E_WARNING
1
E_WARNING
2
E_WARNING
3
E_WARNING
4
Cảnh báo
Tệp từ xa có thể được xử lý tại máy chủ từ xa [tùy thuộc vào phần mở rộng của tệp và thực tế máy chủ từ xa có chạy PHP hay không] nhưng nó vẫn phải tạo tập lệnh PHP hợp lệ vì nó sẽ được xử lý tại máy chủ cục bộ. Nếu tệp từ máy chủ từ xa chỉ được xử lý ở đó và chỉ xuất ra, readfile[] là chức năng tốt hơn nhiều để sử dụng. Mặt khác, cần đặc biệt cẩn thận để bảo mật tập lệnh từ xa để tạo mã hợp lệ và mong muốn
Xem thêm Tệp từ xa, fopen[] và tệp[] để biết thông tin liên quan
xử lý hàng trả lại. include
trả lại E_WARNING
6 khi thất bại và đưa ra cảnh báo. Thành công bao gồm, trừ khi bị ghi đè bởi tệp được bao gồm, trả về E_WARNING
7. Có thể thực thi một câu lệnh return bên trong một tệp được bao gồm để kết thúc quá trình xử lý trong tệp đó và quay lại tập lệnh đã gọi nó. Ngoài ra, có thể trả về các giá trị từ các tệp được bao gồm. Bạn có thể lấy giá trị của lệnh gọi bao gồm như đối với một chức năng bình thường. Tuy nhiên, điều này không thể thực hiện được khi bao gồm các tệp từ xa trừ khi đầu ra của tệp từ xa có các thẻ bắt đầu và kết thúc PHP hợp lệ [như với bất kỳ tệp cục bộ nào]. Bạn có thể khai báo các biến cần thiết trong các thẻ đó và chúng sẽ được giới thiệu tại bất kỳ thời điểm nào mà tệp được đưa vào
Bởi vì include
là một cấu trúc ngôn ngữ đặc biệt, không cần có dấu ngoặc đơn xung quanh đối số của nó. Hãy cẩn thận khi so sánh giá trị trả lại
Ví dụ #4 So sánh giá trị trả về của bao gồm
E_WARNING
9
E_ERROR
0
Ví dụ #5 include
và câu lệnh return
E_ERROR
2
E_ERROR
3
E_ERROR
4
include
8
E_ERROR
6
E_ERROR
3
include
8
E_ERROR
9
include
0
include
1
include
2
include
3
include
8
include
5 là giá trị E_WARNING
7 vì bao gồm thành công. Lưu ý sự khác biệt giữa các ví dụ trên. Cái đầu tiên sử dụng trả về trong tệp được bao gồm trong khi cái kia thì không. Nếu không thể bao gồm tệp, include
7 được trả lại và E_WARNING
được cấp
Nếu có các chức năng được xác định trong tệp được bao gồm, chúng có thể được sử dụng độc lập trong tệp chính nếu chúng ở trước hoặc sau. Nếu tệp được bao gồm hai lần, PHP sẽ phát sinh lỗi nghiêm trọng vì các chức năng đã được khai báo. Bạn nên sử dụng include_once thay vì kiểm tra xem tệp đã được bao gồm chưa và trả lại có điều kiện bên trong tệp được bao gồm
Một cách khác để "đưa" tệp PHP vào một biến là nắm bắt đầu ra bằng cách sử dụng Hàm điều khiển đầu ra với include
. Ví dụ
Ví dụ #6 Sử dụng bộ đệm đầu ra để đưa tệp PHP vào một chuỗi
require
0
require
1
include
8
Để tự động bao gồm các tệp trong tập lệnh, hãy xem thêm các tùy chọn cấu hình và trong php. ban đầu
Ghi chú. Bởi vì đây là một cấu trúc ngôn ngữ và không phải là một hàm, nó không thể được gọi bằng cách sử dụng các hàm biến, hoặc
Tại sao PHP bao gồm không hoạt động?
Đảm bảo bạn sử dụng đúng đường dẫn . Hàm bao gồm sẽ cố gắng nhập tệp PHP của bạn bằng cách điều hướng đường dẫn hệ thống tệp. Điều này có nghĩa là bạn cần đảm bảo rằng tập lệnh được bao gồm có thể được truy cập từ tập lệnh cần nó bằng đường dẫn đã chỉ định.@include trong PHP là gì?
Chữ @ trong php loại bỏ tất cả đầu ra lỗi . Chẳng hạn, nếu bạn báo cáo lỗi cho các cảnh báo, một ký tự @ phía trước chức năng tạo ra cảnh báo sẽ không hiển thị văn bản cảnh báo. bao gồm là một ví dụ về một cấu trúc như vậy. Nếu không tìm thấy tệp đi kèm, nó sẽ hiển thị cảnh báo cho biết như vậy.