- Trang chủ
- Hướng dẫn học
- Học PHP
- PHP include và require
Định nghĩa và cách dùng include và require
include
hoặcrequire
tiện lợi cho việc sử dụng những phần dùng chung, ví dụ header, footer, sidebar hoặc một function dùng chung nào đó.- Đối với những phần dùng chung này, ta tách riêng ra 1 file PHP, sau đó sử dụng
include
hoặcrequire
để kết nối. - Điều này tiện lợi cho việc chỉnh sửa, thay vì chỉnh nhiều trang, giờ thì ta chỉ việc chỉnh file PHP đã tách riêng là được.
Sự khác biệt giữa
include
vàrequire
:include
: code bên dướiinclude
sẽ tiếp tục thực thi, cho dù file đượcinclude
có tồn tại hay không.require
: code bên dướirequire
sẽ không được thực thi, nếu file đượcrequire
không tồn tại.
include
- Được dùng để chèn một file PHP vào một file PHP khác.
Cấu trúc
Ví dụ:
Content
Ta thấy nội dung 2 file header.php và footer.php đã được thêm vào.
Download file ví dụ
include với file không tồn tại
// Giả sử file header.php không cóContent
Warning: include[header.php]: failed to open stream: No such file or directory in C:\xampp\htdocs\example\index.php on line 1
Warning: include[]: Failed opening 'header.php' for inclusion [include_path='.;C:\xampp\php\PEAR'] in C:\xampp\htdocs\example\index.php on line 1
Content
Ta thấy trình duyệt gửi cảnh báo, tuy nhiên những PHP vẫn thực thi những đoạn code bên dưới.
require
- Được dùng để chèn một file PHP vào một file PHP khác, file được chèn bắt buộc phải tồn tại, nếu không sẽ không thực thi những đoạn code tiếp theo.
- Thường được dùng để chèn nội dung kết nối database, function login, payment, ...
- Cách sử dụng tương tự như
include
.
Cấu trúc
Ví dụ:
Content
Nội dung 2 file header.php và footer.php đã được thêm vào.
Download file ví dụ
require với file không tồn tại
// Giả sử file header.php không cóContent
Warning: require[header.php]: failed to open stream: No such file or directory in C:\xampp\htdocs\example\index.php on line 1
Fatal error: require[]: Failed opening required 'header.php' [include_path='.;C:\xampp\php\PEAR'] in C:\xampp\htdocs\example\index.php on line 1
Ta thấy trình duyệt gửi cảnh báo, và những đoạn code bên dưới đã không được thực thi.
PHP include và require với path
Lưu ý: nếu chưa được cấu hình đường dẫn tương đối [relative path] thì dễ xảy ra lỗi khi dùng
/đường_dẫn_file/tên_file [trong trường hợp phân cấp thư mục], khắc phục tình trạng này có 2 cách:
Sử dụng đường dẫn tuyệt đối
Sử dụng cách này cần kích hoạt allow_url_fopen
và allow_url_include
sang On
trong php.ini
Content
Download file ví dụ
Sử dụng DOCUMENT_ROOT
Content
Download file ví dụ
Khi viết chương trình xử lý bằng PHP sẽ không tránh khỏi việc lặp lại một công việc nào đó. Lúc này PHP cho phép nhúng một file php vào một file php khác, có thể coi đây là một phúc lợi cho người lập trình.
1. Nhúng file trong PHP
- Nhúng file là một thao tác rất hữu ích khi bạn muốn nhúng cùng một đoạn code PHP, HTML hoặc văn bản giống nhau vào nhiều trang khác nhau mà không cần phải lặp lại code.
- Trong PHP, để tiết kiệm thời gian chúng ta có
thể tạo sẵn các file nhúng php như phần header, content, footer, function ... dùng chung nào đó và chỉ việc nhúng chúng vào trang web. Khi cần chỉnh sửa ta cũng chỉ cần vào các file nhúng để sửa mà không phải lội vào trang web để mò .
2. Các hàm nhúng file trong PHP
Khởi tạo 3 file php như sau:
- Header:
Header
- Footer:
Footer
- index.php:
Content
- Kiểm tra sự tồn tại của đường dẫn trước khi nhúng file:
Ở Lession 0 , tôi đã giới thiệu cách cài đặt localhost Xampp trên Window 10. Bây giờ hãy khởi động Xampp để trải nghiệm Apache và SQL nào
2.1. Hàm Include:
Include được dùng để chèn một file PHP vào một file PHP khác. Khi gặp lỗi include sẽ chỉ tạo cảnh báo PHP nhưng vẫn cho phép tiếp tục thực thi tập lệnh nếu không tìm thấy tệp được include.
- Cú pháp:
Ví dụ:
- Trong thư mục htdocs tạo một thư mục chung là DEMO , bên trong tạo thư mục con include và lưu file footer.php và header.php trong đó.
- file index.php đồng mức với thư mục include, tức là:
Chỉnh sửa file index.php như sau:
Content
Gõ lệnh: localhost:80/DEMO/index.php
Kết quả: Nội dung 2 tệp footer.php và header.php đều đã được thêm vào dưới và trên Content
2.2. Hàm Require:
Require đưa ra thông báo lỗi và ngừng thực thi đoạn code bên dưới câu lệnh.
- Cú pháp:
Ví dụ: Sử dụng lại từ ví dụ ở trên:
- Sửa tên thư mục include require như hình.
- Sửa file index.php như sau:
- Sửa tên thư mục include
Content 2
Gõ lệnh: localhost:80/DEMO/index.php
Kết quả: Nội dung 2 tệp footer.php và header.php đều đã được thêm vào dưới và trên Content 2
Nếu bạn vô tình gọi cùng một tệp [thường là các function hoặc class] nhiều hơn một lần trong code của bạn bằng cách sử dụng các câu lệnh include[] hoặc require[], nó có thể gây ra xung đột.
Đừng lo lắng, Include_once và Require_once sẽ giải quyết vấn đề này.
Cái tên nói lên tất cả, Include_once và Require_once quy định các tệp đã được thêm vào rồi sẽ không được thêm bất kì lần nào nữa.
- Hai phương thức này hoạt động giống hệt nhau, đó là chỉ nhận tệp đúng 1 lần: Thử chút nhé
Đầu tiên ta đưa tệp header.php ra cùng mức với index.php
Oops! Tôi lỡ tay cho cả hai tệp ra rồi
- Sửa tệp index.php thành thế này:
Nhưng chỉ cần thêm _once
sau include hoặc require thì trang web sẽ chỉ
nhận tệp một lần mà thôi, bất kể trước đó đã có require hay include
Dù 1 _once
hay 2 _once
thì code trên cũng chỉ ra một kết quả:
3. Đường dẫn trong file nhúng
Có 2 loại đường dẫn:Trước tiên cần đưa 3 file về cùng một thư mục, ở đây tôi kéo 3 em ấy về cùng một nhà trong thư mục include
3.1. Đường dẫn tuyệt đối:
- Sử dụng cách này cần kích hoạt allow_url_fopen và allow_url_include sang chế độ On trong php.ini
Để tìm file php.ini chỉ cần vào Xampp và chọn config ấn tổ hợp phím ctrl + F, cửa sổ tìm kiếm hiện ra, ta tìm hai từ khóa trên và đổi giá trị sang On.
Tiến hành tìm kiếm với ctrl + F: allow_url_fopen
Chuyển sang chế độ : On
Tiến hành tìm kiếm với ctrl + F: allow_url_include
Chuyển sang chế độ : On
Sử dụng đường dẫn tuyệt đối như sau:
Content
Gõ lệnh: localhost:80/DEMO/index.php
Kết quả: Nội dung 2 tệp footer.php và header.php đều đã được thêm vào dưới và trên Content
3.2. Sử dụng DOCUMENT_ROOT
Một giải pháp hiệu quả khi bạn nhất thời chưa thể đưa ra được đường dẫn tuyệt đối của file php.
- Cú pháp:
Content
Gõ lệnh: localhost:80/DEMO/index.php
Kết
quả: Nội dung 2 tệp footer.php và header.php đều đã được thêm vào dưới và trên Content 2
Link tham khảo:
//hocwebchuan.com/tutorial/php/php_include_require.php
//laptrinhvienphp.com/bai-19-huong-dan-iclude-va-require-trong-php/
//www.codehub.com.vn/Hoc-PHP/Nhung-File-trong-PHP