Bài 10: INCLUDE, INCLUDE_ONCE, REQUIRE, REQUIRE_ONCE TRONG PHP
Bạn có thể include nội dung của một file php tới một file php khác trước khi server thực thi nó. Có 2 chức năng mà có thể được sử dụng để đưa một file php vào file php khác. Include() Require() Đây là điểm mạnh của ngôn ngữ PHP mà giúp bạn tạo các chức năng, headers, footers, hoặc ...
Bạn có thể include nội dung của một file php tới một file php khác trước khi server thực thi nó. Có 2 chức năng mà có thể được sử dụng để đưa một file php vào file php khác.
- Include()
- Require()
Đây là điểm mạnh của ngôn ngữ PHP mà giúp bạn tạo các chức năng, headers, footers, hoặc các nhân tố mà có thể tái sử dụng trong nhiều trang. Nó sẽ giúp developer tạo dể dàng thay đổi giao diện (layout) của một web site hoàn chỉnh mà ít tốn công sức nhất. Nếu có bất kỳ thay đổi yêu cầu thì thay vì phải thay đổi hàng ngàn file, bạn chỉ cần thay đổi 1 file duy nhất. Nghĩa là nếu các bạn sử dụng header cho trang web, nếu các bạn k tạo nó ở 1 file riêng rồi include vào, mà mổi trang bạn làm bạn đều đính kèm code header vô trang đó, thì khi thay đổi header bạn phải vào trừng trang, từng file mà thay đổi toàn bộ.
Rồi bây giờ chúng ta đi chi tiết include() và require()
Chức năng include()
Chức năng này lấy tất cả nội dung trong 1 file đã xác định và copy nó vào file mà sử dụng chức năng include(). Nếu có bất kỳ vấn đề trong việc load một file thì include() tạo ra cảnh báo nhưng script sẽ tiếp tục thực thi.
Giả định bạn muốn tạo một menu chung cho website của bạn. Thì tạo một file menu.php với nội dung sau:
<a href=http://www.dammelaptrinh.com/index.htm>Home</a> –
<a href=http://www.dammelaptrinh.com/xml.htm>XML</a> –
<a href=http://www.dammelaptrinh.com/ajax.htm>AJAX</a> –
<a href=http://www.dammelaptrinh.com/perl.htm>PERL</a> <br/>
Bây giờ tạo nhiều trang tùy thích rồi include file menu này tới file của bạn. Ví dụ bạn tạo file test.php với nội dung sau:
<html>
<body>
<?php include(“menu.php”);?>
<p>Đây là một ví dụ để biểu diển thế nào là include file PHP! </p>
</body>
</html>
Khởi động server rồi ra trình duyệt chạy localhost/test.php xem kết quả
Home –
XML –
AJAX –
PERL
Đây là một ví dụ để biểu diển thế nào là include file PHP !
Chức năng require()
Chức năng này cũng làm nhiệm vụ tương tự như include, tuy nhiên nếu có lổi xãy ra trong quá trình load file thì chương trình sẽ ngắt và không thực thi script.
Vì thế không có sự khác nhau trong require() và include() ngoại trừ chúng xử lý điều kiện có lổi xãy ra. Theo kinh nghiệm tôi khuyên khác bạn nên sử dụng require() hơn là include(), bởi vì script không nên tiếp tục thực thi nếu file không tồn tại hoặc sai tên hoặc có lổi, vì sẽ gây ra lổi chức năng khác khi bạn kế thừa từ một file khác, thay vì nó show cái lổi ra để bạn biết đường mà sữa nó trước khi đưa ra cộng đồng một sản phẩm hoàn chỉnh.
Bạn có thể sử dụng lại ví dụ ở trên với require() và nó sẽ cho ra cùng kết quả. Nhưng nếu bạn cố tình đưa vô tên file không tồn tại thì bạn sẽ có được kết quả khác nhau.
<html>
<body>
<?php include(“xxmenu.php”);?>
<p> Đây là một ví dụ để biểu diển thế nào là include sai file php!</p>
</body>
</html>
Kết quả sẽ là :
Đây là một ví dụ để biểu diển thế nào là include sai file php!
Rồi với cùng ví dụ ta sử dụng require()
<html>
<body>
<?php require(“xxmenu.php”);?>
<p> Đây là một ví dụ để biểu diển thế nào là include sai file php!</p>
</body>
</html>
Kết quả sẽ không có j bởi vì nó đã ngắt chương trình do file xxmenu.php không tồn tại.
Vậy tùy thuộc vào yêu cầu mà bạn lựa chọn cho mình nên sử dụng include hay require. Nếu có một chức năng hay file nào đó mà bạn không xác định được, và muốn đưa nó vào page của bạn nếu nó có, còn nếu nó không có thì page của bạn vẩn phải làm việc mà bạn mong muốn thì bạn hãy dùng include
Chúng ta sang một điểm rất quan trọng nữa cho 2 chức năng này.
Giả sử chúng ta tạo ra một class A và vài phương thức Tổng(), Hiệu() v…v ở một file và chúng ta muốn include chúng vào chương trình của chúng ta để sử dụng những phương thức đó. Nhưng vô tình chúng ta include nhiều lần file này, thì tương ứng trong file làm việc của bạn nó có nội dung của 2-3 phương thức cùng tên , và điều này sẽ gây lổi,bởi trình biên dịch không chấp nhận khai báo 2 phương thức trùng nhau (về lập trình hướng đối tượng, class chúng ta sẽ làm rõ hơn ở bài sau). Hoặc bạn vô tình đưa vào 2-3 lần nội dung file menu gây ra đổ nát trang của bạn.
Để giải quyết vấn đề này php cung cấp cho chúng ta 2 hàm đó là
Include_once và require_once.
Cách hoạt động include_once giống include nếu load file lổi thì chúng vẩn tiếp tục thực thi script, chỉ duy nhất nếu file đã được include trước đố rồi thì include_once sẽ không đưa vào nữa. gây duplicate nội dung
Require_once hoạt động tương tự như require, khi gặp lổi load fille thì sẽ dừng chương trình, và nếu đã đưa vào file rồi thì require_once sẽ không đưa vô nữa.
Đến đây các bạn đã phân biệt được include,include_once, require_once ắt hẳn các bạn đã biết nên dùng cái nào rồi phải không, tùy vào yêu cầu của các bạn mà chọn lựa thích hợp.
Mà theo phân tích ở trên thì thôi tôi dùng include_once và require_once luôn , sao phải dùng include, require, vì các bạn thấy nó như bao hàm luôn rồi và còn được loại khỏi file trùng nữa. Vâng thắc mắt không sai chỉ có điều nếu bạn dùng include_once và require_once thì chương trình sẽ phải làm công việc là kiễm tra file đã được đưa vô trước đó chưa, nó sẽ thực hiện chậm hơn include và require và tốn bộ nhớ hơn. Cho nên include và require mới còn sống sót được đúng không nào.