PHP Include và Require
Trong hướng dẫn này, bạn sẽ học cách sử dụng include, require, include_once, và require_once các tệp trong lập trình PHP.
Chèn nội dung một tệp PHP vào một tệp PHP khác
Câu lệnh include()
và require()
cho phép bạn chèn nội dung mã có trong một tệp PHP vào trong một tệp PHP khác. Việc chèn một tệp như vậy sẽ tạo ra kết quả giống như việc sao chép tập lệnh từ tệp được chỉ định và dán vào vị trí nơi nó được chèn.
Bạn có thể tiết kiệm rất nhiều thời gian và làm việc thông qua việc chèn các tệp - Chỉ cần lưu trữ mã trong một tệp riêng biệt và đưa nó vào bất cứ nơi nào bạn muốn bằng cách sử dụng câu lệnh include()
và require()
thay vì nhập toàn bộ mã nhiều lần. Một ví dụ điển hình là chèn tệp đầu trang, chân trang và menu (header, footer, menu) trong tất cả các trang của một trang web.
Cú pháp cơ bản của câu lệnh include()
và require()
như sau:
include("path/to/filename"); -Or- include"path/to/filename";
Mẹo: Giống như câu lệnh print và echo, bạn có thể bỏ qua dấu ngoặc đơn khi sử dụng câu lệnh include và require như đã trình bày ở trên.
Ví dụ sau sẽ cho bạn thấy cách chèn các mã đầu trang, chân trang và mã menu chung được lưu trữ trong các tệp 'header.php', 'footer.php' và 'menu.php' riêng biệt tương ứng trong tất cả các trang của trang web của bạn. Sử dụng kỹ thuật này, bạn có thể cập nhật tất cả các trang của trang web cùng một lúc bằng cách thực hiện các thay đổi đối với chỉ một tệp, điều này giúp tiết kiệm rất nhiều công việc lặp đi lặp lại.
Ví dụ
<!DOCTYPE html>
<html lang="vi">
<head>
<title>VZN.vn</title>
</head>
<body>
<?php include "header.php"; ?>
<?php include "menu.php"; ?>
<h1>Chào mừng bạn đến với VZN.vn!</h1>
<p>Ở đây bạn sẽ tìm thấy nhiều thông tin hữu ích.</p>
<?php include "footer.php"; ?>
</body>
</html>
Sự khác biệt giữa câu lệnh include() và require()
Bạn có thể đang nghĩ nếu chúng ta có thể bao gồm các tệp bằng cách sử dụng câu lệnh include()
thì tại sao chúng ta còn cần require()
. Thông thường, câu lệnh require()
hoạt động giống như include()
.
Sự khác biệt duy nhất là - câu lệnh include()
sẽ chỉ tạo ra một cảnh báo PHP (E_WARNING
) nhưng 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 đưa vào, trong khi câu lệnh require()
sẽ tạo ra một lỗi nghiêm trọng (E_COMPILE_ERROR
) và dừng việc thực thi tập lệnh.
Ví dụ
<?php require "my_variables.php"; ?>
<?php require "my_functions.php"; ?>
<!DOCTYPE html>
<html lang="vi">
<head>
<title><?php displayTitle($home_page); ?></title>
</head>
<body>
<?php include "header.php"; ?>
<?php include "menu.php"; ?>
<h1>Chào mừng bạn đến với VZN.vn!</h1>
<p>Ở đây bạn sẽ tìm thấy nhiều thông tin hữu ích.</p>
<?php include "footer.php"; ?>
</body>
</html>
Mẹo: Bạn nên sử dụng câu lệnh require()
nếu bạn đang chèn các tệp thư viện hoặc tệp chứa các hàm và biến cấu hình cần thiết để chạy ứng dụng của bạn, chẳng hạn như tệp cấu hình cơ sở dữ liệu .
Câu lệnh include_once và require_once
Nếu bạn vô tình chèn cùng một tệp (thường là các tệp hàm hoặc lớp ) nhiều lần trong mã của mình bằng cách sử dụng câu lệnh include hoặc require, điều đó có thể gây ra xung đột. Để ngăn chặn tình trạng này, PHP cung cấp câu lệnh include_once và các require_once. Các câu lệnh này hoạt động theo cùng một cách các câu lệnh include và require với một ngoại lệ.
Các câu lệnh include_once và require_once sẽ chỉ chèn tệp một lần ngay cả khi được yêu cầu chèn nó lần thứ hai, tức là nếu tệp được chỉ định đã được đưa vào một câu lệnh trước đó, tệp sẽ không được đưa vào một lần nữa. Để hiểu rõ hơn về cách nó hoạt động, hãy xem một ví dụ. Giả sử chúng ta có tệp 'my_functions.php' với mã sau:
Ví dụ
<?php
function multiplySelf($var){
$var *= $var; // nhân biến với chính nó
echo $var;
}
?>
Đây là tập lệnh PHP mà chúng tôi đã chèn tệp 'my_functions.php' trong đó.
Ví dụ
<?php
// Including file
require "my_functions.php";
// Calling the function
multiplySelf(2); // Kết quả: 4
echo "<br>";
// Including file once again
require "my_functions.php";
// Calling the function
multiplySelf(5); // Không thực thi
?>
Khi bạn chạy đoạn script trên, bạn sẽ thấy thông báo lỗi như sau: "Fatal error: Cannot redeclare multiplySelf()" . Điều này xảy ra do 'my_functions.php' được chèn hai lần, điều này có nghĩa là hàm multiplySelf()
được định nghĩa hai lần, điều này khiến PHP ngừng thực thi tập lệnh và tạo ra lỗi nghiêm trọng. Bây giờ viết lại ví dụ trên với require_once.
Ví dụ
<?php
// Including file
require_once "my_functions.php";
// Calling the function
multiplySelf(2); // Kết quả: 4
echo "<br>";
// Including file once again
require_once "my_functions.php";
// Calling the function
multiplySelf(5); // Kết quả: 25
?>
Như bạn có thể thấy, bằng cách sử dụng require_once thay vì require, tập lệnh hoạt động như chúng ta mong đợi.