Biến include statement trong PHP tương tự như import statement trong Java hoặc Python, và #include directive trong C/C++. Tuy nhiên, có một sự khác biệt nhỏ trong cách mà câu lệnh include hoạt động trong PHP.
Câu lệnh import trong Java/Python hoặc #include trong C/C++ chỉ tải một hoặc nhiều cấu trúc ngôn ngữ như các hàm hoặc lớp được định nghĩa trong một tệp vào tệp hiện tại. Ngược lại, câu lệnh include trong PHP đưa tất cả mọi thứ trong một tệp khác vào kịch bản PHP hiện có. Nó có thể là mã PHP, một tệp văn bản, mã HTML, v.v.
Dưới đây là một ví dụ điển hình về cách câu lệnh include hoạt động trong PHP −
<?php # some PHP code ?>
<?php include 'myfile.php'; # PHP script in test.php ?>
Từ khóa include trong PHP rất hữu ích, đặc biệt khi bạn cần sử dụng cùng một mã PHP (hàm hoặc lớp) hoặc đánh dấu HTML trong nhiều script PHP trong một dự án. Một ví dụ điển hình là việc tạo ra một menu cần xuất hiện trên tất cả các trang của một ứng dụng web.
Giả sử bạn muốn tạo một menu chung cho trang web của mình. Sau đó, hãy tạo một tệp "menu.php" với nội dung sau.
<a href="http://www.tutorialspoint.com/index.htm">Home</a> - <a href="http://www.tutorialspoint.com/ebxml">ebXML</a> - <a href="http://www.tutorialspoint.com/ajax">AJAX</a> - <a href="http://www.tutorialspoint.com/perl">PERL</a> <br />
Bây giờ hãy tạo bao nhiêu trang tùy thích và bao gồm tệp này để tạo tiêu đề. Ví dụ, bây giờ tệp "test.php" của bạn có thể có nội dung sau −
<html> <body> <?php include("menu.php"); ?> <p>This is an example to show how to include PHP file!</p> </body> </html>
Cả hai tệp được giả định có mặt trong thư mục gốc tài liệu của máy chủ XAMPP. Truy cập URL http://localhost/test.php . Nó sẽ tạo ra output sau −
Khi trình phân tích cú pháp PHP gặp từ khóa include , nó sẽ cố gắng tìm tệp được chỉ định trong cùng một thư mục từ đó kịch bản hiện tại đang được thực thi. Nếu không tìm thấy, các thư mục trong cài đặt "include_path" của "php.ini" sẽ được tìm kiếm.
Khi một tệp được bao gồm, mã mà nó chứa sẽ kế thừa phạm vi biến của dòng mà việc bao gồm xảy ra. Bất kỳ biến nào có sẵn tại dòng đó trong tệp gọi sẽ có sẵn trong tệp được gọi, 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 được bao gồm đều có phạm vi toàn cục.
Trong ví dụ sau, chúng ta có một tập tin "myname.php" với hai biến được khai báo trong đó. Tập tin này được bao gồm trong một tập tin khác là test.php. Các biến được nạp vào phạm vi toàn cục.
myname.php
<?php $color = 'green'; $fruit = 'apple'; ?>
test.php
<?php include "myname.php"; echo "<h2>$fname $lname</h2>"; ?>
Khi trình duyệt truy cập http://localhost/test.php , nó hiển thị −
Ravi Teja
Tuy nhiên, nếu tệp được bao gồm bên trong một hàm, các biến chỉ là một phần của phạm vi cục bộ của hàm đó.
myname.php
<?php $color = 'green'; $fruit = 'apple'; ?>
test.php
<?php function showname() { include "myname.php"; } echo "<h2>$fname $lname</h2>"; ?>
Bây giờ khi trình duyệt truy cập vào http://localhost/test.php , nó hiển thị cảnh báo biến không xác định −
Warning: Undefined variable $fname in C:\xampp\htdocs\test.php on line 7 Warning: Undefined variable $lname in C:\xampp\htdocs\test.php on line 7
Cũng giống như include , PHP cũng có từ khóa " include_once ". Sự khác biệt duy nhất là nếu mã từ một tệp đã được bao gồm, nó sẽ không được bao gồm lại, và "include_once" trả về true. Như tên gọi đã chỉ ra, tệp sẽ chỉ được bao gồm một lần.
"include_once" có thể được sử dụng trong những trường hợp mà cùng một tệp có thể được bao gồm và đánh giá nhiều hơn một lần trong một lần thực thi cụ thể của một kịch bản, vì vậy nó có thể giúp tránh các vấn đề như định nghĩa lại hàm, gán lại giá trị biến, v.v.
Từ khóa require trong PHP khá giống với từ khóa include . Sự khác biệt giữa hai từ khóa này là, khi thất bại, require sẽ tạo ra một lỗi mức E_COMPILE_ERROR nghiêm trọng.
Nói cách khác, require sẽ dừng kịch bản, trong khi include chỉ phát ra một cảnh báo (E_WARNING) cho phép kịch bản tiếp tục.
Từ khóa "require_once" tương tự như require với một sự khác biệt tinh tế. Nếu bạn đang sử dụng "require_once", thì PHP sẽ kiểm tra xem tệp đã được bao gồm chưa, và nếu có, thì tệp đó sẽ không được bao gồm lại.