Ngôn ngữ PHP – Hàm Include và Require

    Trong PHP, để có thể chèn nội dung của một file khác(thông thường là file php) vào file PHP hiện tại, chúng ta dùng hàm require() và hàm include(). Việc này nhằm tiết kiệm thời gian và tính nhất quán, giúp cho việc code ứng dụng nhanh hơn.

    Gọi file với include, require

    Câu lệnh include (hoặc require) dùng để lấy tất cả nội dung bao gồm text, code, và các thẻ của một file(nếu tồn tại ) vào file người dùng sử dụng hàm include.
    Gọi file nó rất hữu ích trong việc chúng ta cần gọi cùng một nội dung Php của nhiều file khác nhau của website.

    Với hai câu lệnh này về chức năng hoàn toàn tương đồng nhau. Nhưng nó chỉ khác khi thông báo lỗi.

    Trong thực tế người ta vẫn hay sử dụng require hơn để đảm bảo tính thông suốt của hệ thống. Khi có lỗi liên quan đến gọi file thì sẽ dừng chương trình và mình cần phải xử lý ngay.

    Ví dụ ta có file1.php với đoạn code sau:

    Cách sử dụng hàm include()
    Cú pháp
    Include “filename”;

    Xem ví dụ

    Cách sử dụng hàm require()
    Cú pháp
    Require “filename”;

    Xem ví dụ

    Phân biệt giữa hàm include() và hàm require()
    Khi có lỗi xảy ra(file được chèn không tồn tại):
    – Hàm include() sẽ hiển thị ra một thông báo lỗi dạng warning và đoạn mã vẫn tiếp tục được thực thi.
    – Hàm require() sẽ hiển thị ra một thông báo lỗi dạng fatal và đoạn mã sẽ bị dừng xử lý ngay sau đó.

    Ngoài 2 thông báo dạng warning ở đầu rằng không tìm thấy file ‘nofile.php’ , còn có một lỗi fatal không tìm thấy hàm TinhTong() do đoạn mã vẫn tiếp tục thực thi.

    Có 2 thông báo dạng warning và fatal đều là không tìm thấy file ‘include1.php’ tại dòng 1. Ngoài ra không còn thông báo lỗi nào nữa do đoạn mã đã dừng ngay tại nơi thông báo lỗi fatal ở dòng 1.

    Gọi file với include_once và require_once
    Ngoài ra còn 2 hàm require_once ‘filename’ và hàm include_once ‘filename’ có chức năng tương tự như như hai hàm require ‘filename’ và hàm include ‘filename’. Song chúng sẽ chỉ chèn file một lần duy nhất, cho dù có khai báo chèn thêm file đó bao nhiêu lần đi nữa.
    Ví dụ 
    Ta có file fileA.php

    Xem ví dụ

    Hoặc

    Xem ví dụ

    Kết quả: ta có hoàn toàn như nhau file A
    Khi nào nên sử sụng require ?
    Bạn nên sử dụng require khi ứng dụng yêu cần phải nhập vào một tập tin mang tính chất bắt buộc. Nếu tập tin này không tồn tại PHP sẽ chấm dứt hoạt động của chương trình đang chạy và hiển thị lỗi E_COMPILE_ERROR.
    Ví dụ sau sẽ nhập vào tập tin database_config.php, file này chứa thông tin như database username, password hay địa chỉ host để kết nối tới database:

    Nếu file database_config.php không tồn tại PHP sẽ hiển thị lỗi và chấm dứt chương trình.
    Khi nào nên sử dụng require_once ?
    Bạn sử dụng require_once khi file nhập vào là bắt buộc phải có và tập tin này chỉ nên được nhập vào một lần đầu tiên, nếu file này tiếp tục được nhập vào sau đó (sử dụng một trong ba hàm require, include hay require_once PHP sẽ bỏ qua việc nhập vào.
    Ví dụ sau sẽ nhập vào tậ tin connect_db.php chứa logic thực hiện việc kết nối tới database. Do đó trên mỗi trang có kết nối tới database, chúng ta chỉ nên thực hiện việc nhập vào file này một lần đầu duy nhất.

    Khi nào nên sử dụng include ?
    Sử dụng include khi bạn muốn nhập vào tập tin không mang tính chất bắt buộc, có cũng được không có cũng không sao:

    Demo trang web tin tức

    Giả sử, bạn cần xây dựng một trang web có 2 trang: trang chủ – nội dung tin tức, có layout như sau:

    Các thành phần giống nhau giữa 2 trang là phần header, left , right, footer- chỉ có phần content là khác nội dung. Bạn sẽ cần tạo 2 file: index.php (hiển thị trang chủ), trang_tin_tuc.php (hiển thị nội dung trang tin tức). Như vậy, ở file index.php và trang_tin_tuc.php các phần code giống nhau để xử lý cho việc hiển thị header, left, right , footer- điều này dẫn đến vấn đề dư thừa mã nguồn. Thêm vào đó, nếu một lúc nào đó cần thiết để sửa code cho các chức năng này bạn lại phải cập nhật cho từng file khiến cho vấn đề bảo trì mã nguồn trở nên khó khăn, tính cấu trúc của trang web thiếu logic. 

    Để giải quyết vấn đề này, chúng ta tạo thêm 2 file: header.php và left.php, right.php, footer.php cho chức năng hiển thị phần header của trang web và hiển thị phần panel bên trái, right cho phần bên phải, ở file nào cần dùng tới chúng ta chỉ cần triệu gọi hay còn gọi là tải nạp (load) chúng vào vị trí cần dùng là được. Tương tự, bạn cũng có thể tạo một nhóm các file thành các thư viện riêng rẽ – khai báo các hàm mà chúng được sử dụng nhiều lần, mỗi khi cần gọi hàm thì triệu gọi – tải nạp file thư viện mà thôi, không cần phải định nghĩa lại. 

    Phần code HMTL trang template

    Xem ví dụ

  1. Tạo phần header.php
    <p>Header... </p>
  2. Tạo phần left.php
    <h3>Left heading</h3>
    <ul>
        <li><a href="#">Link 1</a></li>
        <li><a href="#">Link 2</a></li>
        <li><a href="#">Link 3</a></li>
        <li><a href="#">Link 4</a></li>
        <li><a href="#">Link 5</a></li>
    </ul>
    <h3>Left heading</h3>
    <ul>
        <li><a href="#">Link 1</a></li>
        <li><a href="#">Link 2</a></li>
        <li><a href="#">Link 3</a></li>
        <li><a href="#">Link 4</a></li>
        <li><a href="#">Link 5</a></li>
    </ul>

     

  3. Tao phần right.php
    <h3>Right heading</h3>
    <p>Dành cho quảng cáo</p>
    <p>Dành cho quảng cáo</p>
    <p>Dành cho quảng cáo</p>
    <p>Dành cho quảng cáo</p>
    <p>Dành cho quảng cáo</p>
  4. Tạo phần footer.php
    <footer id="footer"><p>Footer... [email protected]</p></footer>