Include and include_once khác nhau như thế nào

Trong PHP các đoạn code khác nhau bạn có thể bố trí ở nhiều file mã nguồn (thường có phần mở rộng .php) khác nhau, rồi khi một file script php chạy nó có thể nạp và chạy code bạn viết ở các file khác nhau. Bạn có thể dùng hàm (lệnh) include, require và include_once, require_once để thực hiện nạp và chạy file. Điều này giúp bạn có thể xây dựng các thư viện chức năng, tổ chức code nhiều file theo logic nào đó, để dễ bảo trì và mở rộng.

Lệnh include trong PHP

Lệnh include đọc nội dung của file, thi hành nó. Cú pháp:

include 'ten-file-php.php'Giả sử bạn tạo một menu chung cho các trang. Thì bạn có thể tạo file menu.php với nội dung như sau:

Home - Lập trình PHP - HTML - Liên hệ

Với file menu.php này bạn có thể gộp nó vào các file khác, ví dụ bạn tạo file index.php:

Đây là ví dụ về lệnh include()!

Khi thực hiện include thì phạm vi (khu vực hiệu lực của biến, các biến có hiệu lực tại dòng include thì cũng hiệu lực trong file ngoài), đối với các khai báo hàm, class khai báo trong file ngoài thì có phạm vi toàn cục.

Trong file ngoài có nếu có mệnh đề return thì nó trả về tại đó, có thể có giá trị trả về (code sau return không thực thi)

mgs.php

file1.php

Một file ngoài đơn thuần tính toán xuất kết quả trả về có thể include nhiều lần, nhưng nếu file đó có định nghĩa function, class ... thì nếu include lại thì là định nghĩa lại - sẽ không được phép, phát sinh lỗi.

Chạy file1.php kết quả in ra:

Hai số a = 5, b = 6 Tong = 11 Hai số a = 33, b = 56 Tong = 89

Hàm include_once trong PHP

Hàm include_once chức năng giống hệt include, điều khác duy nhất nếu một file đã từng được nạp vào thì include_once lần 2, 3 sẽ không làm gì (không nạp lại).

Câu lệnh include và require trong PHP được sử dụng để chèn nội dung của file php này vào file php khác.

Việc chèn nội dung file là rất hữu ích khi bạn muốn chèn các dòng code php, html giống nhau vào nhiều trang khác nhau.

Câu lệnh include và require là giống nhau, trừ trường hợp bị lỗi:

  • require: sẽ tạo ra lỗi nghiêm trọng (E_COMPILE_ERROR) và dừng tập 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 chương trình tiếp tục được thực thi và hiển thị đến người dùng, ngay cả khi file được chèn vào bị thiếu, hãy sử dụng câu lệnh include. Nếu không, trong trường hợp FrameWork, CMS hoặc ứng dụng PHP phức tạp, hãy luôn sử dụng câu lệnh require để chèn một file là bắt buộc tới 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.

Include các file tiết kiệm rất nhiều công sức. Điều này có nghĩa là bạn có thể tạo file header.php, footer.php hoặc menu.php cho tất cả các trang web của mình. Sau đó, khi cần cập nhật phần tiêu để của trang, bạn chỉ cần cập nhật file header.php.


Nội dung chính

  • Cú pháp
  • Các ví dụ về include và require trong PHP
  • Ví dụ 2
  • Ví dụ 3
  • Include vs Require

Cú pháp

include 'filename'; hoặc require 'filename';



Các ví dụ về include và require trong PHP

Ví dụ 2

Giả sử chúng ta có một tệp menu chuẩn được gọi là "menu.php":

<?php echo '<a href="">Home</a> - <a href="/html">HTML</a> - <a href="/css">CSS</a> - <a href="/javascript">JavaScript</a> - <a href="/php">PHP</a>'; ?>

Sử dụng câu lệnh include để chèn menu và footer vào trang page2.php:

<html> <body> <?php include 'menu.php';?> <h1>Welcome to VietTuts.Vn!</h1> <p>Some text.</p> <p>Some more text.</p> <?php include 'footer.php';?> </body> </html>

Kết quả:



Ví dụ 3

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

<?php $color='đỏ'; $car='BMW'; ?>

Sử dụng câu lệnh include để chèn file trên vào trang page3.php:

<html> <body> <h1>Welcome to VietTuts.Vn!</h1> <?php include 'cars.php'; echo "Xe $car có màu $color."; ?> </body> </html>

Kết quả:


Include vs Require

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

Tuy nhiên, có một sự khác biệt lớn giữa include và require, khi một file được chèn bằng 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 VietTuts.Vn!</h1> <?php include 'file_khong_ton_tai.php'; echo "Xe $car có màu $color."; ?> </body> </html>

Kết quả:

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