SESSION và COOKIE (Bài trước)

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, requireinclude_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.


Đăng ký nhận bài viết mới
SESSION và COOKIE (Bài trước)