So sánh require include require_once và include_once

  • Khanh Hoang
  • Tue, 19/03/2013, 9:39 (GMT+7)

So sánh include, include_once, require, require_once

1/ require() – include() :

- Giống: Chèn file vào file hiện tại, nếu file được chèn có lỗi thì hiện thông báo lỗi

- Khác : khi file được chèn bằng lệnh require() có lỗi thì trình biên dịch sẽ dừng lại, không dịch nữa và sẽ xuất hiện thông báo lỗi. Còn khi file được chèn bằng lệnh include() có lỗi thì trình biên dịch vẫn tiếp tục dịch cho đến hết, đồng thời cũng xuất hiện warning để mình biết file đó bị lỗi.

Ví dụ 1: file a.php

<?php required (‘b.php’); echo “hello”; ?>

Giả sử file b.php không tồn tại, khi chạy file a.php lên, trên màn hình sẽ không xuất hiện chữ hello

Ví dụ 2: file a.php

<?php include (‘b.php’); echo “hello”; ?>

Giả sử file b.php không tồn tại, khi chạy file a.php lên, trên màn hình có xuất hiện chữ hello

2/ require_once() – include_once()

- Là hai dạng biến đổi của hàm require() và include()

- Mục đích : nếu file được chèn đã được chèn ở trước đó rồi, thì bây giờ sẽ không chèn nữa.

Ví dụ: File a.php có nội dung là : aaaaaaaa == File b.php có nội dung là:

<?php

include “a.php”; include “a.php”;

?>

Khi chạy file b.php thì kết quả sẽ là: aaaaaaaa ==aaaaaaaa ==

Ví dụ 2: Nhưng nếu file b.php sữa lại là:

<?php include (“a.php”); include_once(“a.php”); ?>

hoặc là:

<?php include_once (“a.php”); include_once(“a.php”); ?>

thì khi chạy file b.php thì kết quả sẽ là: aaaaaaaa ==

Bạn thấy bài viết này như thế nào?:

So sánh require include require_once và include_once

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Lệnh require_once() có thể được sử dụng để chèm một tập tin php trong một số tập tin khác, khi bạn có thể cần phải bao gồm các tập tin được gọi nhiều hơn một lần. Nếu nó đã được chèn vào rồi, thì những vị trí chèn sau sẽ bỏ qua.

Cú pháp:

include_once('filename');

Ví dụ:

File: x.php

<?php echo "Hôm nay là:".date("Y-m-d"); ?>

File x.php được sử dụng 2 lần với lệnh include_once() để chèn vào file z.php. Nhưng file thứ 2 sẽ bị bỏ qua.

File: y.php

<?php echo "Chèn x.php lần 1: "; include_once ('x.php'); echo "</br>"; echo "Chèn x.php lần 2: "; include_once ('x.php'); ?>

Kết quả:

Chèn x.php lần 1: Hôm nay là:2020-10-09 Chèn x.php lần 2:

Nếu lệnh require_once() không tìm thấy file được chèn thì hệ thống hiển thị cảnh báo không tìm thấy file được chèn, và tiếp tục thực thi các câu lệnh tiếp theo.

2. Lệnh require_once() trong PHP

Lệnh require_once() có thể được sử dụng để chèm một tập tin php trong một số tập tin khác, khi bạn có thể cần phải bao gồm các tập tin được gọi nhiều hơn một lần. Nếu nó đã được chèn vào rồi, thì những vị trí chèn sau sẽ bỏ qua.

Cú pháp:

require_once('filename');

Ví dụ:

File: x.php

<?php echo "Hôm nay là:".date("Y-m-d"); ?>

File x.php được sử dụng 2 lần với lệnh require_once() để chèn vào file y.php. Nhưng file thứ 2 sẽ bị bỏ qua.

File: y.php

<?php echo "Chèn x.php lần 1: "; require_once('x.php'); echo "</br>"; echo "Chèn x.php lần 2: "; require_once('x.php'); ?>

Kết quả:

Chèn x.php lần 1: Hôm nay là: 2020-10-09 Chèn x.php lần 2:

Nếu lệnh require_once() không tìm thấy file được chèn thì chương trình sẽ bị dừng lại.

Trên đây là bài viết của eLib.VN về các lệnh include_once và require_once trong PHP. Hy vọng những nội dung của bài viết hữu ích cho những bạn đang tìm hiểu lập trình PHP. Chúc các bạn thành công!

Để xây dựng một trang web bằng PHP thì đòi hỏi ban phải sử dụng rất nhiều mã code khác nhau và có thể lên đến hàng trăm hàng ngàn line, vì vậy nếu chúng ta chỉ code nó trong một file PHP duy nhất thì rất là tệ hại bởi rất khó để nâng cấp và bảo trì chúng. Với nhược điểm này hầu hết các ngôn ngữ lập trình cho phép chúng ta phân chia mã code thành nhiều file khác nhau và muốn dùng file nào thì chỉ việc khai báo là được. Với C++ hay C# thì chúng ta có lệnh

<?php
  include 'fileA.php';
?>

0 dùng để import các thư viện vào một file và sử dụng, vậy trong PHP cũng có một lệnh tương tự đó là lệnh

<?php
  include 'fileA.php';
?>

1,

<?php
  include 'fileA.php';
?>

2,

<?php
  include 'fileA.php';
?>

3 và

<?php
  include 'fileA.php';
?>

4.

Trong bài này mình sẽ hướng dẫn các bạn cách sử dụng và phân biệt khi nào thì nên sử dụng từng lệnh cụ thể nhé.

Trước tiên bạn tạo cho tôi 2 file đó là file

<?php
  include 'fileA.php';
?>

5 và file

<?php
  include 'fileA.php';
?>

6 nhé.

Lệnh require - require_once - include - include_once trong PHP

1. Lệnh require - require_once - include - include_once

Lệnh require, require_once, include và include_once dùng để import một file PHP A vào một file PHP B với mục đích giúp file PHP B có thể sử dụng được các thư viện trong file PHP A.

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

<?php
  include 'fileA.php';
?>

7 riêng và bất kì một file khác muốn sử dụng thì chỉ cần import file

<?php
  include 'fileA.php';
?>

7 đó vào.

Về cú pháp thì cả bốn lệnh đều có chung cú pháp như sau:

1

2

3

4

<?php
  include 'fileA.php';
?>

1

file A

0

file A

1

<?php
  include 'fileA.php';
?>

2

file A

0

file A

1

<?php
  include 'fileA.php';
?>

3

file A

0

file A

1

<?php
  include 'fileA.php';
?>

4

file A

0

file A

1

Trong đó

<?php
  require'fileA.php';
?>

1 là đường dẫn tuyệt đối nhé các bạn, nghĩa là path là một đường dẫn trên Server chứ không phải trên trình duyệt browser (nghĩa là đường dẫn tương đối).

Bây giờ chúng ta cùng tìm hiểu cụ thể hơn về cách sử dụng nhé.

Lệnh require:

Dùng để import một file PHP khác vào file hiện tại, lúc này file hiện tại có thể sử dụng mọi tài nguyên của file import đó.

Ví dụ: Bạn mở file

<?php
  include 'fileA.php';
?>

6 lên và nhập vào nội dung sau.

1

2

3

4

<?php
  require'fileA.php';
?>

3

<?php
  require'fileA.php';
?>

4

<?php
  require'fileA.php';
?>

5

<?php
  require'fileA.php';
?>

6

<?php
  require'fileA.php';
?>

7

<?php
  require'fileA.php';
?>

8

file A

1

<?php
  require'fileA.php';
  require'fileA.php';
?>

0

Tiếp theo bạn vào file

<?php
  include 'fileA.php';
?>

5 nhập nội dung sau:

1

2

3

4

5

<?php
  include 'fileA.php';
?>

1

<?php
  require'fileA.php';
  require'fileA.php';
?>

3

file A

1

<?php
  require'fileA.php';
  require'fileA.php';
?>

5

Chạy file

<?php
  include 'fileA.php';
?>

5 lên bạn sẽ thấy nó xuất ra câu thông báo "Đây là hàm show_message trong file import.php".

Nếu bạn cố ý require hai lần cùng một file thì lập tức sẽ bị thông báo lỗi vì hàm

<?php
  require'fileA.php';
?>

4 đã được định nghĩa. Lý do là khi ta require hai lần thì lần thứ hai đã bị đụng tên hàm. Bây giờ bạn thay đổi nội dung file

<?php
  include 'fileA.php';
?>

5 như sau:

1

2

3

4

5

6

<?php
  include 'fileA.php';
?>

1

file A
file A

0

file A

1

<?php
  include 'fileA.php';
?>

1

file A
file A

0

file A

1

<?php
  require'fileA.php';
  require'fileA.php';
?>

5

Lập tức sẽ bị thông báo lỗi như hình dưới đây.

So sánh require include require_once và include_once

Lệnh require_once:

Lệnh này có chức năng chẳng khác gì lệnh require, tuy nhiên điểm khác biệt đó là lệnh require_once chỉ import đúng một lần, nghĩa là khi bạn sử dụng hai lệnh require_once cùng một file thì ở lệnh require_once thứ hai nó sẽ thấy là đã xử lý rồi nên nó sẽ không thực thi nữa.

Ví dụ: Bạn thay đổi nội dung file

<?php
  include 'fileA.php';
?>

5 như sau

1

2

3

4

5

6

<?php
  include 'fileA.php';
?>

2

<?php
  require'fileA.php';
  require'fileA.php';
?>

3

file A

1

<?php
  include 'fileA.php';
?>

2

<?php
  require'fileA.php';
  require'fileA.php';
?>

3

file A

1

<?php
  require'fileA.php';
  require'fileA.php';
?>

5

Chạy lên chương trình vẫn hoạt động bình thường.

Lệnh include:

Công dụng và tính chất giống như lênh require.

Ví dụ:

1

2

3

4

5

<?php
  include 'fileA.php';
?>

3

<?php
  require'fileA.php';
  require'fileA.php';
?>

3

file A

1

<?php
  require'fileA.php';
  require'fileA.php';
?>

5

Tương tự như require. Tuy nhiên nếu bạn cố ý include hai lần thì sẽ KHÔNG xuất hiện lỗi mà đó chỉ là một cảnh báo, đây chính là sự khác nhau giữa hai lệnh này.

Lệnh include_once:

Công dụng và tính chất giống với lệnh require_once.

Ví dụ:

1

2

3

4

5

<?php
  include 'fileA.php';
?>

4

<?php
  require'fileA.php';
  require'fileA.php';
?>

3

file A

1

<?php
  require'fileA.php';
  require'fileA.php';
?>

5

2. Sự khác nhau giữa require và include

Chúng ta sẽ nói về sự khác nhau giữa require và include, require_once và include_once luôn. Tuy nhiên mình sẽ giải thích cặp đầu tiên đó là require và include thôi, cặp còn lại sẽ tương tự nhé các bạn.

Giống nhau giữa require và include:

Cả hai lệnh đều có nhiệm vụ import một file PHP vào một file PHP khác.

Khác nhau giữa require và include:

Nếu khi import một file bằng lệnh require thì nếu chương trình bị lỗi thì lập tức trình biên dịch sẽ dừng và xuất ra thông báo lỗi. Còn nếu sử dụng lệnh include thì đó chỉ là một cảnh báo nên chương trình vẫn chạy cho đến cuối chương trình.

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. - require sẽ sinh ra lỗi và dừng chạy chương trình - include sẽ sinh ra cảnh báo và vẫn chạy chương trình 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ó file fileA.php

<?php
echo "File A</br>";
?>

Và ở file index.php ta sử dụng câu lệnh gọi file(cùng cấp với fileA.php)

<?php
  include 'fileA.php';
?>

Kết quả khi chạy file index.php

file A

Nếu sử dụng require câu lệnh như sau

<?php
  require'fileA.php';
?>

Tuy nhiên khi sử dụng include hoặc require để gọi cùng một file nhiều lần thì kết quả nội dung được gọi sẽ gom nhiều lần ở file gọi

<?php
  require'fileA.php';
  require'fileA.php';
?>

Kết quả chúng ta có

file A
file A

Gọi file với include_once và require_once

Tương tự những tính chất về tính năng của include và require, chức năng là gọi file và tính chất báo lỗi khi chạy chương trình.

Điểm khác biệt là sử dụng include hoặc require có thể gọi một file nhiều lần và nó cũng gộp file nhiều lần. Còn với include_once hoặc require_one thì hoàn toàn khác, việc gọi file chỉ được gọi nhiều nhất một lần khi hai câu lệnh này kiểm tra xem file được gọi đã được gọi vào trước đó hay chưa. Nếu đã được gọi rồi thì công việc đó không được lặp lại thêm bất kỳ một lần nào nữa

Với hai câu lệnh này có lợi thế tránh được việc người lập trình vô tình gọi nhiều lần một nội dung trong khi bản chất vấn đề là chỉ gọi một lần

Như ví dụ trên ta sử dụng như sau

<?php
  require'fileA.php';
  require_once'fileA.php';
?>

Hoặc

<?php
  require_once 'fileA.php';
  require_once 'fileA.php';
?>

Kết quả ta có hoàn toàn như nhau

file A

Kiểm tra đường dẫn tồn tại trước khi require

Trong thực tế để đảm bảo việc gộm file được diễn ra suôn sẻ và không hiện tượng cảnh báo hoặc đan đoạn chương trình trong php sử dụng hàm file_exists()để kiểm tra việc tồn tại của đường dẫn trước khi thực hiện gọi file.

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

Kết luận

Thông qua định nghĩa và ứng dụng của của từng câu lệnh một chúng ta có thể lựa chọn cho mình một cách thích hợp nhất.