Câu lệnh include và require trong PHP

Câu lệnh include (hoặc require) lấy tất cả văn bản / mã / thẻ trong file được chỉ định và sao chép nó vào file đã sử dụng câu lệnh include.

Câu lệnh include file rất hữu ích khi bạn muốn sử dụng cùng một tập lệnh PHP, mã HTML hoặc văn bản trên nhiều trang của một trang web.

Câu lệnh include và require trong PHP

Bạn có thể chèn nội dung của một file PHP vào một file PHP khác (trước khi máy chủ thực thi nó) bằng câu lệnh include hoặc require.

Câu lệnh include và require thì giống hệt nhau, chỉ khác khi xảy ra lỗi:

  • Câu lệnh require sẽ tạo ra một lỗi nghiêm trọng (E_COMPILE_ERROR) và dừng tập lệnh.
  • Câu lệnh include sẽ chỉ tạo cảnh báo (E_WARNING) và tập lệnh sẽ tiếp tục.

Vì vậy, nếu bạn muốn tiếp tục thực thi và hiển thị cho người dùng đầu ra, ngay cả khi tệp được thêm vào bị thiếu, hãy sử dụng câu lệnh include.

Ngược lại, trong trường hợp FrameWork, CMS hoặc viết những ứng dụng PHP phức tạp, hãy luôn sử dụng câu lệnh require để đưa các tệp chính vào luồng thực thi.

Điều này sẽ giúp tránh ảnh hưởng đến tính bảo mật và tính toàn vẹn của ứng dụng của bạn, nhất là trong trường hợp một tệp chính vô tình bị thiếu.

Việc cho phép chèn các tập tin vào tập tin khác giúp tiết kiệm rất nhiều thời gian và công việc.

Điều này có nghĩa là bạn có thể tạo một file tiêu đề, chân trang hoặc menu tiêu chuẩn và chèn chúng vào tất cả các trang web của bạn. Sau này, nếu tiêu đề thay đổi thì bạn chỉ cần cập nhật file tiêu đề thay vì phải vào từng trang để cập nhật.

Cú pháp

include 'filename';

//or

require 'filename';

Ví dụ sử dụng include trong PHP

ví dụ 1

Giả sử chúng ta có một file chân trang tiêu chuẩn gọi là "footer.php", trông giống như thế này:

<?php
   echo "<p>Copyright &copy; " . date("Y") . " Comdy.vn</p>";
?>

Để thêm file chân trang vào trong một trang, hãy sử dụng câu lệnh include như sau:

<html>

<body>

    <h1>Welcome to my home page!</h1>
    <p>Some text.</p>
    <p>Some more text.</p>
    <?php include 'footer.php';?>

</body>

</html>

Đây là kết quả:

Câu lệnh include trong PHP

Ví dụ 2

Giả sử chúng ta có một file menu tiêu chuẩn gọi là "menu.php":

<?php
   echo '<a href="/default.asp">Home</a> -
   <a href="/html/default.asp">HTML Tutorial</a> -
   <a href="/css/default.asp">CSS Tutorial</a> -
   <a href="/js/default.asp">JavaScript Tutorial</a> -
   <a href="default.asp">PHP Tutorial</a>';
?>

Để thêm tệp chân trang vào trong một trang, hãy sử dụng câu lệnh include như sau:

<html>

<body>

    <div class="menu">
        <?php include 'menu.php';?>
    </div>

    <h1>Welcome to my home page!</h1>
    <p>Some text.</p>
    <p>Some more text.</p>

</body>

</html>

Đây là kết quả:

Câu lệnh include trong PHP

Ví dụ 3

Giả sử chúng ta có một file có tên là "vars.php", với một số biến được định nghĩa sẵn:

<?php
   $color = 'red';
   $car = 'BMW';
?>

Để thêm tệp "vars.php" vào trong một trang, hãy sử dụng câu lệnh include như sau:

<html>

<body>

    <h1>Welcome to my home page!</h1>
    <?php include 'vars.php';
        echo "I have a $color $car.";
    ?>

</body>

</html>

Đây là kết quả:

Câu lệnh include trong PHP

So sánh include với require trong PHP

Câu lệnh require cũng được sử dụng để thêm một file vào mã PHP.

Tuy nhiên, có một sự khác biệt lớn giữa includerequire; khi một file được thêm bằng câu lệnh include và PHP không thể tìm thấy nó, tập lệnh sẽ tiếp tục thực thi:

<html>

<body>

    <h1>Welcome to my home page!</h1>
    <?php include 'noFileExists.php';
       echo "I have a $color $car.";
    ?>

</body>

</html>

Đây là kết quả:

Câu lệnh include trong PHP

Mặc dù file "noiFileExists.php" không tồn tại nhưng chương trình vẫn chạy. Các biến $color và $car không được định nghĩa nên không có giá trị để xuất ra.

Nếu chúng ta thực hiện cùng một ví dụ trên bằng cách sử dụng câu lệnh require, câu lệnh echo sẽ không được thực thi vì thực thi tập lệnh sẽ dừng sau khi câu lệnh require trả về lỗi nghiêm trọng:

<html>

<body>

    <h1>Welcome to my home page!</h1>
    <?php require 'noFileExists.php';
        echo "I have a $color $car.";
    ?>

</body>

</html>

Đây là kết quả:

Câu lệnh require trong PHP

Như bạn đã thấy trong kết quả, câu lệnh echo đã không được thực thi do PHP không tìm thấy file "noFileExists.php".

Sử dụng require khi file được yêu cầu bởi ứng dụng.
Sử dụng include khi file không bắt buộc và ứng dụng sẽ tiếp tục khi không tìm thấy.


Bài viết liên quan:

Hướng dẫn lập trình PHP toàn tập sẽ giúp bạn từng bước tìm hiểu và nắm vững ngôn ngữ lập trình PHP.

Hướng dẫn cách truy xuất, lọc, sắp xếp dữ liệu MySQL trong PHP sử dụng MySQLi và PDO.

MySQL prepared statements trong PHP rất hữu ích để chống lại các cuộc tấn công SQL Injection.