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:
<a href="/">Home</a> - <a href="/lap-trinh-php/">Lập trình PHP</a> - <a href="/html/">HTML</a> - <a href="/contact/">Liên hệ</a> <br />
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
:
<html> <body> <?php include("menu.php"); ?> <p>Đây là ví dụ về lệnh include()!</p> </body> </html>
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
<?php $s = "Hai số a = $a, b = $b\n"; return $s; // <-- gặp return sẽ trả về echo 'Hello'; // <-- sau return không được thực thi
file1.php
<?php $a = 5; $b = 6; // <-- mgs.php truy cập được $a, $b $thongbao = include 'mgs.php'; // <-- Nạp và lưu giá trị từ file ngoài echo $thongbao; $tong = $a + $b; echo "Tong = $tong \n"; $a = 33; $b = 56; $thongbao = include 'mgs.php'; // <-- Một file có thể include nhiều lần echo $thongbao; $tong = $a + $b; echo "Tong = $tong \n";
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).
tinhtoan.php
<?php function tong($a, $b) { return $a + $b; } function hieu($a, $b) { return $a - $b; } echo "Nạp tinhtoan.php";
file2.php
<?php include_once 'tinhtoan.php'; // <--- lần đầu nạp - in ra: Nạp tinhtoan.php echo tong(1,2); // <--- Sử dụng hàm khai báo trong tinhtoan.php include_once 'tinhtoan.php'; // <--- không in thông tin gì, không thi hành include_once 'tinhtoan.php'; echo hieu(1,2);
Nếu trong file2.php bạn sử dụng include thì sẽ dẫn tới lỗi, vì tinhtoan.php có định nghĩa hàm, nếu include lại thì định nghĩa lại hàm, không được phép.
Hàm require và require_once
Chức năng hàm require thì giống hệt include, còn require_once giống include_once. Điều khác là nếu file không tồn tại thì include/include_once phát lỗi Warning, script có thể vẫn chạy tiếp, còn với require/require_once sẽ phát lỗi Error, script sẽ dừng ngay lập tức.