Trong khi làm bài tập hay xây dựng một dự án, ta không thể chỉ có duy nhất một file PHP được. Ta sẽ có nhiều file với các tác dụng khác nhau nhưng chắc chắc sẽ có file liên quan đến nhau và file này cần “sử dụng” một file khác. Vì vậy ta sẽ học được cách nhúng các file với nhau trong bài này!

1. Các hàm nhúng file trong PHP

Trong PHP thì có hỗ trợ nhúng file với nhau bằng 4 câu lệnh sau:

  • Include
  • Include_once
  • Require
  • Require_once

Ta sẽ sử dụng những câu lệnh này để import một file PHP này vào một file PHP kia với mục đích file được nhúng sẽ sử dụng được các thư viện trong file mà không cần lặp lại code.

Ví dụ bạn đang xây dựng một ứng dụng quản lý sinh viên, lúc này bạn cần một số hàm kết nối và xử lý dữ liệu cho sinh viên thì bạn sẽ đặt nó trong một file student.php riêng và bất kì một file khác muốn sử dụng thì chỉ cần import file student.php đó vào bằng một trong các câu lệnh trên:

require "/quanly.php";
require_once "/quanly.php";
include "/quanly.php";
include_once "/quanly.php";

2. Include và require trong PHP

Câu lệnh includerequire cho phép ta nhúng một file khác vào file hiện tại và tất cả những gì ở file đó đều có thể sử dụng ở file được nhúng.

Cú pháp:

/* Nếu sử dụng include */
include '<ĐƯỜNG DẪN TỚI FILE>';

/* Nếu sử dụng require */
require '<ĐƯỜNG DẪN TỚI FILE>';

Ví dụ: tạo một file là demo.php với nội dung:

<?php 
function showMess()
{
    echo "Nếu thấy dòng này là ok rồi đấy";
}
?>

Ta sẽ sử dụng file demo này vào một file là index.php

<?php
include 'demo.php';
// require 'demo.php'
showMess();
 ?>

Includerequire có cách xử lý khác nhau khi gặp lỗi:

  • require đưa ra thông báo lỗi và ngừng thực thi đoạn code bên dưới câu lệnh.
  • include đưa ra thông báo lỗi và vẫn tiếp tục thực thi các đoạn code bên dưới câu lệnh.

Do vậy nếu bạn muốn quá trình thực thi tiếp tục và đưa ra nội dung cuối cùng cho người dùng (user) ngay cả khi file cần nhúng bị mất hay bị lỗi thì bạn nên sử dụng câu lệnh include. Ngược lại, trong các trường hợp như FrameWork, CMS hoặc các ứng dụng PHP phức tạp, bạn luôn phải sử dụng câu lệnh require để nhúng các file quan trọng trong quá trình thực thi. Điều này giúp bạn tránh ảnh hưởng đến các ứng dụng cần bảo mật và tính toàn vẹn khi không may một file quan trọng bị mất.

3. Include_once và require_once trong PHP

Tương tự như 2 câu lệnh trên thì include_oncerequire_once thực hiện công việc nhúng các file với nhau.

Cú pháp:

/* Nếu sử dụng include_once */
include_once '<ĐƯỜNG DẪN TỚI FILE>';
/* Nếu sử dụng require_once */
require_once '<ĐƯỜNG DẪN TỚI FILE>';

Ví dụ:

<?php
include_once 'demo.php';
//require_once 'demo.php';
showMess();
 ?>

Cách xử lý khi gặp lỗi của include_once giống với include và của require_once giống với require.

Điểm khác biệt là ở chỗ, khi sử dụng include hoặc require ta có thể nhúng nội dung của cùng một file nhiều lần bằng cách lặp lại câu lệnh. Còn với include_once hoặc require_once, nếu file đã được nhúng rồi thì việc lặp lại câu lệnh để nhúng lại nội dung của file đó sẽ không có ý nghĩa. Với hai câu lệnh này có thể tránh được việc người lập trình vô tình nhúng nhiều lần cùng một nội dung trong khi thực chất chỉ cần nhúng 1 lần là đủ.

4. Tác dụng của việc nhúng file trong

Trong PHP các đoạn code khác nhau bạn có thể bố trí ở nhiều file php khác nhau như là một thư viện, rồi bạn gộp chung lại trong một file PHP khi Server chạy. Có hai hàm để bạn làm điều này đó là include()require(). Điều này giúp bạn có thể xây dựng các thư viện chức năng để sử dụng lại ở nhiều file, hoặc giúp bạn dàn trang như là tạo phần header, footer, sidebar … trên các file riêng rồi ghép vào trang.

Đây là một điểm mạnh của PHP mà giúp đỡ trong việc tạo hàm, header, footer hay các phần tử có thể được tái sử dụng trong nhiều trang. Điều này sẽ giúp các lập trình viên dễ dàng thay đổi bố cục của web. Nếu có bất kì thay đổi nào được yêu cầu, thay vì phải thay đổi hàng nghìn file thì chỉ cần thay đổi file được bao.

5. Kiểm tra sự tồn tại của đường dẫn trước khi nhúng file

Trong thực tế, để đảm bảo việc nhúng file được suôn sẻ chúng ta nên sử dụng hàm file_exists() để kiểm tra sự tồn tại của đường dẫn trước khi thực hiện gọi file để nhúng.

Ví dụ:

<?php
  $path = "demo.php";
  if(file_exists($path)){
     require $path;
  } else{
     die("{$path} không tồn tại");
  }
?>