Hướng dẫn dùng requis trong PHP

  • Trang chủ
  • Hướng dẫn học
  • Học PHP
  • PHP include và require

Nội dung chính

  • Định nghĩa và cách dùng include và require
  • PHP include và require với path
  • Cú pháp
  • Ví dụ 1 Giả sử chúng ta có một tệp chân trang tiêu chuẩn được gọi là "footer.php", trông giống như sau: <?php echo "<p>Copyright © 2016-" . date("Y") . " VietTuts.Vn</p>"; ?> Sử dụng câu lệnh include để chèn chân trang vào trang page1.php: <html> <body> <h2>Welcome to VietTuts.Vn!</h2> <p>Some text.</p> <p>Some more text.</p> <?php include 'footer.php';?> </body> </html> Kết quả:
  • Ví dụ 2
  • Ví dụ 3
  • Include vs Require
  • Yêu cầu một file PHP vào một file PHP khác trong lập trình PHP
  • Sự khác nhau giữa câu lệnh include và riquire trong PHP
  • Cách sử dụng câu lệnh Include_once và require_once trong PHP
  • Tổng kết

Định nghĩa và cách dùng include và require

  • include hoặc require tiện lợi cho việc sử dụng những phần dùng chung, ví dụ header, footer, sidebar hoặc một function dùng chung nào đó.
  • Đối với những phần dùng chung này, ta tách riêng ra 1 file PHP, sau đó sử dụng include hoặc require để kết nối.
  • Điều này tiện lợi cho việc chỉnh sửa, thay vì chỉnh nhiều trang, giờ thì ta chỉ việc chỉnh file PHP đã tách riêng là được.
  • Sự khác biệt giữa includerequire:

    • include: code bên dưới include sẽ tiếp tục thực thi, cho dù file được include có tồn tại hay không.
    • require: code bên dưới require sẽ không được thực thi, nếu file được require không tồn tại.

include

  • Được dùng để chèn một file PHP vào một file PHP khác.

Cấu trúc

<?php
include "đường_dẫn_file/tên_file";
?>

Ví dụ:

<?php include "include/header.php"; ?>
<div>Content</div>
<?php include "include/footer.php"; ?>

Ta thấy nội dung 2 file header.phpfooter.php đã được thêm vào.

Download file ví dụ

include với file không tồn tại

<?php include "include/header.php"; ?>  // Giả sử file header.php không có
<div>Content</div>
<?php include "include/footer.php"; ?>

Warning: include(header.php): failed to open stream: No such file or directory in C:\xampp\htdocs\example\index.php on line 1

Warning: include(): Failed opening 'header.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\example\index.php on line 1

Content

Ta thấy trình duyệt gửi cảnh báo, tuy nhiên những PHP vẫn thực thi những đoạn code bên dưới.

require

  • Được dùng để chèn một file PHP vào một file PHP khác, file được chèn bắt buộc phải tồn tại, nếu không sẽ không thực thi những đoạn code tiếp theo.
  • Thường được dùng để chèn nội dung kết nối database, function login, payment, ...
  • Cách sử dụng tương tự như include.

Cấu trúc

<?php
require "đường_dẫn_file/tên_file";
?>

Ví dụ:

<?php require "require/header.php"; ?>
<div>Content</div>
<?php require "require/footer.php"; ?>

Nội dung 2 file header.phpfooter.php đã được thêm vào.

Download file ví dụ

require với file không tồn tại

<?php require "require/header.php"; ?>  // Giả sử file header.php không có
<div>Content</div>
<?php require "require/footer.php"; ?>

Warning: require(header.php): failed to open stream: No such file or directory in C:\xampp\htdocs\example\index.php on line 1

Fatal error: require(): Failed opening required 'header.php' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\example\index.php on line 1

Ta thấy trình duyệt gửi cảnh báo, và những đoạn code bên dưới đã không được thực thi.

PHP include và require với path

Lưu ý: nếu chưa được cấu hình đường dẫn tương đối (relative path) thì dễ xảy ra lỗi khi dùng
/đường_dẫn_file/tên_file (trong trường hợp phân cấp thư mục), khắc phục tình trạng này có 2 cách:

Sử dụng đường dẫn tuyệt đối

Sử dụng cách này cần kích hoạt allow_url_fopenallow_url_include sang On trong php.ini

<?php include "http://localhost/include/header.php"; ?>
<div>Content</div>
<?php include "http://localhost/include/footer.php"; ?>

Download file ví dụ

Sử dụng DOCUMENT_ROOT

<?php include $_SERVER["DOCUMENT_ROOT"] . "/include/header.php"; ?>
<div>Content</div>
<?php include $_SERVER["DOCUMENT_ROOT"] . "/include/footer.php"; ?>

Download file ví dụ



Câu lệnh include và require trong PHP được sử dụng để chèn nội dung của file php này vào file php khác.

Nội dung chính

  • Cú pháp
  • Ví dụ 1 Giả sử chúng ta có một tệp chân trang tiêu chuẩn được gọi là "footer.php", trông giống như sau: <?php echo "<p>Copyright © 2016-" . date("Y") . " VietTuts.Vn</p>"; ?> Sử dụng câu lệnh include để chèn chân trang vào trang page1.php: <html> <body> <h2>Welcome to VietTuts.Vn!</h2> <p>Some text.</p> <p>Some more text.</p> <?php include 'footer.php';?> </body> </html> Kết quả:
  • Ví dụ 2
  • Ví dụ 3
  • Include vs Require
  • Yêu cầu một file PHP vào một file PHP khác trong lập trình PHP
  • Sự khác nhau giữa câu lệnh include và riquire trong PHP
  • Cách sử dụng câu lệnh Include_once và require_once trong PHP
  • Tổng kết

Việc chèn nội dung file là rất hữu ích khi bạn muốn chèn các dòng code php, html giống nhau vào nhiều trang khác nhau.

Câu lệnh include và require là giống nhau, trừ trường hợp bị lỗi:

  • require: sẽ tạo ra lỗi nghiêm trọng (E_COMPILE_ERROR) và dừng tập lệnh.
  • include: sẽ chỉ tạo cảnh báo (E_WARNING) và tập lệnh sẽ tiếp tục.

Vì vậy, nếu bạn muốn chương trình tiếp tục được thực thi và hiển thị đến người dùng, ngay cả khi file được chèn vào bị thiếu, hãy sử dụng câu lệnh include. Nếu không, trong trường hợp FrameWork, CMS hoặc ứng dụng PHP phức tạp, hãy luôn sử dụng câu lệnh require để chèn một file là bắt buộc tới luồng thực thi. Điều này sẽ giúp tránh ảnh hưởng đến tính bảo mật và tính toàn vẹn của ứng dụng.

Include các file tiết kiệm rất nhiều công sức. Điều này có nghĩa là bạn có thể tạo file header.php, footer.php hoặc menu.php cho tất cả các trang web của mình. Sau đó, khi cần cập nhật phần tiêu để của trang, bạn chỉ cần cập nhật file header.php.


Cú pháp

include 'filename';

hoặc

require 'filename';


Ví dụ 2

Giả sử chúng ta có một tệp menu chuẩn được gọi là "menu.php":

<?php
echo '<a href="">Home</a> -
<a href="/html">HTML</a> -
<a href="/css">CSS</a> -
<a href="/javascript">JavaScript</a> -
<a href="/php">PHP</a>';
?>

Sử dụng câu lệnh include để chèn menu và footer vào trang page2.php:

<html>
<body>
<?php include 'menu.php';?>

<h2>Welcome to VietTuts.Vn!</h2>
<p>Some text.</p>
<p>Some more text.</p>
<?php include 'footer.php';?>

</body>
</html>

Kết quả:



Ví dụ 3

Giả sử chúng ta có một "cars.php", với một số biến được định nghĩa:

<?php
$color='đỏ';
$car='BMW';
?>

Sử dụng câu lệnh include để chèn file trên vào trang page3.php:

<html>
<body>
<h2>Welcome to VietTuts.Vn!</h2>
<?php include 'cars.php';
echo "Xe $car có màu $color.";
?>
</body>
</html>

Kết quả:


Include vs Require

Câu lệnh require cũng được sử dụng để bao gồm một file vào mã PHP.

Tuy nhiên, có một sự khác biệt lớn giữa include và require, khi một file được chèn bằng lệnh include và PHP không thể tìm thấy nó, tập lệnh sẽ tiếp tục thực thi:

<html>
<body>
<h2>Welcome to VietTuts.Vn!</h2>
<?php include 'file_khong_ton_tai.php';
echo "Xe $car có màu $color.";
?>
</body>
</html>

Kết quả:

Nếu chúng ta làm ví dụ tương tự bằng cách sử dụng lệnh require, câu lệnh echo sẽ không được thực thi vì việc thực thi tập lệnh chết sau khi lệnh require trả về một lỗi nghiêm trọng:

<html>
<body>
<h2>Welcome to VietTuts.Vn!</h2>
<?php require 'file_khong_ton_tai.php';
echo "Xe $car có màu $color.";
?>
</body>
</html>

Kết quả:



Trong bài học này chúng ta sẽ học về include và require trong lập trình PHP.

Yêu cầu một file PHP vào một file PHP khác trong lập trình PHP

Câu lệnh include()require() cho phép bạn load một tệp PHP vào trong một tệp PHP khác.

Inculde một tệp tạo ra kết quả tương tự như sao chép mã từ tệp được chỉ định và dán vào vị trí nơi nó được gọi.

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 include các tệp.

Chỉ cần lưu trữ một đoạn 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ác câu lệnh include() và require() thay vì copy / paste hay viết lại code nhiều lần.

Trong tất cả các trang của trang web chúng ta thường có những đoạn header, footer và menu giống nhau.

Việc viết riêng từng file header, footer, menu

giúp bạn include chúng ở bất kỳ trang nào mà không cần phải viết lại mấy đoạn code đó.

Cú pháp cơ bản của câu lệnh include () và require() có thể được viết như sau:

// Cú pháp include
include("path/to/filename");
// Hoặc
include "path/to/filename";

// Cú pháp require
require("path/to/filename");
// Hoặc
require "path/to/filename";

TIP: Giống như các câu lệnh print và echo, bạn có thể bỏ qua dấu ngoặc đơn trong khi sử dụng các câu lệnh include và require như đã trình bày ở trên:

Ví dụ sau đây sẽ cho bạn thấy cách bao gồm các đoạn code header, footer và menu chung được lưu trữ trong các tệp ‘header.php’, ‘footer.php’ và ‘menu.php’ riêng biệt 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 trong một tệp, việc này giúp tiết kiệm rất nhiều công sức khi lập trình.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Tutorial Republic</title>
</head>
<body>
<?php include "header.php"; ?>
<?php include "menu.php"; ?>
    <h2>Welcome to Our Website!</h2>
    <p>Here you will find lots of useful information.</p>
<?php include "footer.php"; ?>
</body>
</html>

Trong ví dụ trên thì bạn có thể thấy, thay vì viết mã dài loằng ngoằng cho header, footer và menu thì chúng ta nên tách ra file riêng.

Sau đó khi nào muốn dùng thì chỉ cần include hoặc require là xong.

Khi bạn thực hiện thay đổi trong các file đó thì tất cả các nơi chúng được sử dụng sẽ tự động cập nhật theo. (Quá tiết kiệm thời gian luôn).

=> Dễ quản lý, dễ bảo trì code nữa.

Sự khác nhau giữa câu lệnh include và riquire trong PHP

Bạn có thể suy nghĩ:

  • Nếu chúng ta có thể gọi 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ó require()?

Thông thường, câu lệnh require() hoạt động như include().

Sự khác biệt duy nhất là:

  • Câu lệnh include() sẽ chỉ tạo cảnh báo PHP 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 include.
  • Trong khi câu lệnh require() sẽ tạo ra ném ra một lỗi và dừng thực thi tập lệnh luôn.

Ví dụ:

<?php require "my_variables.php"; ?>
<?php require "my_functions.php"; ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <title><?php displayTitle($home_page); ?></title>
</head>
<body>
<?php include "header.php"; ?>
<?php include "menu.php"; ?>
    <h2>Welcome to Our Website!</h2>
    <p>Here you will find lots of useful information.</p>
<?php include "footer.php"; ?>
</body>
</html>

Chạy đoạn mã trên và xem thử kết quả.

Lưu ý: Bạn nên sử dụng câu lệnh require() nếu bạn nhất định cần đến các tệp đó để chương trình tiếp tục chạy được ổn định.

Cách sử dụng câu lệnh Include_once và require_once trong PHP

Nếu bạn vô tình gọi cùng một tệp (thường là các function hoặc class) nhiều hơn một lần trong code của bạn bằng cách sử dụng các câu lệnh include() hoặc require(), nó có thể gây ra xung đột.

Để ngăn chặn tình huống này, PHP cung cấp các câu lệnh include_oncecâu lệnh require_once.

Các câu lệnh này hoạt động theo cùng một cách như include và require nhưng nó có một ngoại lệ.

Các câu lệnh include_once và require_once sẽ chỉ được thêm vào một lần ngay cả khi được yêu cầu thêm vào lần thứ hai, tức là nếu tệp chỉ định đã được đưa vào trước đó thì tệp đó sẽ không được thêm vào lại.

Để hiểu rõ hơn về cách thức hoạt động của nó, hãy xem một ví dụ. Giả sử chúng ta có tệp ‘my_fifts.php’ với code như sau:

<?php
function multiplySelf($var){
    $var *= $var; // multiply variable by itself
    echo $var;
}
?>

Đây là code file PHP khác trong đó chúng ta sẽ include tệp ‘my_fifts.php’.

<?php
// Including file
require "my_functions.php";
// Calling the function
multiplySelf(2); // Output: 4
echo "<br>";
 
// Including file once again
require "my_functions.php";
// Calling the function
multiplySelf(5); // Doesn't execute
?>

Khi bạn chạy đoạn mã trên, bạn sẽ thấy thông báo lỗi đại loại như sau:

“Fatal error: Cannot redeclare multiplySelf()”

Điều này xảy ra vì ‘my_fifts.php’ được thêm vào đến hai lần, có nghĩa là hàm multiplySelf() được định nghĩa hai lần.

Điều này khiến PHP dừng thực thi tập lệnh và gây ra lỗi nghiêm trọng. Bây giờ viết lại ví dụ trên với require_once.

<?php
// Including file
require_once "my_functions.php";
// Calling the function
multiplySelf(2); // Output: 4
echo "<br>";
 
// Including file once again
require_once "my_functions.php";
// Calling the function
multiplySelf(5); // Output: 25
?>

Như bạn có thể thấy, bằng cách sử dụng require_once() thay vì require(), chương trình đã hoạt động đúng như chúng ta mong đợi.

Tổng kết

Như vậy là bạn đã biết cách sử dụng include / include_once và require / require_once trong PHP. Bài tiếp theo chúng ta sẽ tìm hiểu về file sytem function trong PHP.

Tải thêm tài liệu liên quan đến bài viết Hướng dẫn dùng requis trong PHP