Tìm kiếm bài viết

Define - Defined và Const là gì trong PHP - Tìm hiểu về hằng số

12.05.2021

5.0/5 (5 Reviews)

Define - Defined và Const là gì trong PHP - Tìm hiểu về hằng số trong PHP, giống và khác nhau giữa Define - defined và const trong php.

    Define - Defined và Const là gì trong PHP - Tìm hiểu về hằng số trong PHP, giống và khác nhau giữa Define - defined và const trong php. Bài viết này sẽ làm rõ các vấn đề trên.

    Sau nhiều thời gian tiếp xúc và làm việc với các bạn Developer từ Fresher cho đến Senior hay thập chí là các Leader chuyên PHP vẫn có một số bạn bị hỏng kiến thức cơ bản về các hàm, bằng, biến, kiểu dữ liệu .. các kiến thức cơ bản cần xây dựng để bạn đi lâu - dài và xa trên con đường lập trình viên này.

    Hằng số là gì trong PHP ?

    Hằng số là một tên (dịnh danh) cho một giá trị đơn giản không quá phức tạp. Gọi là hằng số bởi vì giá trị ứng với tên hằng sau khi định nghĩa là không đổi trong quá trình thực thi của php. Mặc định hằng số có phân biệt chữ hoa chữ thường.

    Hằng số là gì trong PHP ?

    Thông thường theo quy định trong viết code thì ta nên đặt tên hằng số bằng các ký tự IN HOA, và đây cũng là nguyên tắc đặt tên chung của PHP, vì mặt định trong PHP cũng đã khai báo sẳn rất nhiều hằng số rồi, tí nữa tôi sẽ đề cập. Một hằng số phải bắt đầu bằng một ký tự chữ  (a-Z) hoặc gạch dưới (_), theo sau không được chứa các ký tự đặc biệt.

    Define là gì trong PHP ?

    Define là hàm của PHP dùng để khai báo, định nghĩa cho một hằng số. Hàm define này hoạt động trong các phiên bản PHP từ PHP 4, PHP 5, PHP 7, PHP 8 đều có cả, một hàm mà tồn tại từ PHP4 đến PHP vẫn còn thì bạn biết đọ quan trọng của nó đến đâu rồi đó, vì các phiên bản nâng cấp của PHP sau này đều loại đi rất nhiền hàm của PHP cũ.

    Nếu bạn đã làm việc với PHP từ hồi PHP 5.3 đến khi PHP không hỗ trợ phiên bản này thì bạn phải bắt buộc nâng lên PHP 5.6 bạn sẽ thấy vô số điều mới lạ và đau đầu vì 1 số hàm đã bị loại bỏ ở PHP 5.6 và các version mới hơn sau này.

    define ( string $name , mixed $value , bool $case_insensitive = false ) : bool
    # Cú pháp và kiểu dữ liệu của Hàm define
    1. Tham số:
    2. $name: tên của hằng.
    3. $value: giá trị của hằng.
    4. $case_insensitive: không phân biệt chữ hoa chữ thường thì là true, ngược lại là false.
    5. Giá trị trả về: TRUE hoặc FALSE.

    Hằng số là gì trong PHP ?

    Có thể định nghĩa các hằng define() với các tên dành riêng hoặc thậm chí không hợp lệ, mà giá trị của nó có thể (chỉ) được truy xuất với hằng define(). Tuy nhiên, làm như vậy là không nên.

    Để lấy giá trị hằng bạn chỉ cần chỉ ra tên hằng, hằng số có phạm vi toàn cục, có nghĩa là sau khi định nghĩa bạn có thể truy cập nó ở bất kỳ đâu.

    Trong trường hợp bạn dùng biến lưu trữ tên hằng thì lấy giá trị của hằng bằng hàm constant($name).

    <?php 
        define("LPTECH", 'LEVANPHU');
        echo LPTECH;         //Lấy hằng số bằng cách chỉ ra tên
        $levanphu = 'LEVANPHU';
        echo constant($levanphu); // Lấy hằng số có tên lưu trong biến $levanphu
    ?> 

    Xem thêm tài liệu từ trang gốc của PHP: https://www.php.net/manual/en/function.define.php

    Defined là gì trong PHP ? 

    Hàm defined() là hàm dùng để Kiểm tra xem một hằng số được đặt tên đã cho có tồn tại hay không. Nghĩa nôm na là kiểm tra xem đã được khai báo bằng hàm define hay const chưa đấy.

    Giá trị trả về là kiểu Bool nghĩa là True hoặc False, không có giữa giữa nhé.

    bool define  ( string $name  )
    #Cú pháp

    Ví dụ sau coi là hiểu ngay nha:

    define('LPTECH_IP', '192.168.1.1');
    
    # KIỂM TRA BẰNG HÀM DEFINED
    defined('LPTECH_IP'); // TRUE
    defined('LP_IP'); // FALSE
    

    Hoặc ví dụ sau:

    <?php
    /* Lưu ý việc sử dụng dấu ngoặc kép, điều này là quan trọng. Ví dụ này đang kiểm tra
     * nếu chuỗi 'TEST' là tên của một hằng số có tên TEST */
    if (defined('TEST')) {
        echo TEST;
    }
    ?>

    Const là gì trong PHP ?

    Const là từ khoá cũng giống như hàm define dùm để khai báo một hằng số, tuy nhiên có một tí khác biệt giữa chúng, hay cùng LPTech.Asia tìm hiểu xem chúng khác nhau như thế nào bạn nhé.

    Từ PHP 5.3.0 trở đi thì có thể dùng từ khóa const để định nghĩa hằng số, từ PHP 7 còn có thể định nghĩa hằng số bằng một mảng các giá trị, ví dụ:

    // Định nghĩa hằng số bằng từ khóa const
    const MONDAY = "THỨ HAI";
    echo MONDAY, PHP_EOL;
    
    // hằng số là một mảng các ký tự
    const DAYOFWEEK = [
        'CHỦ NHẬT', 'THỨ HAI', 'THỨ BA', 'THỨ TƯ', 'THỨ NĂM', 'THỨ SAU', 'THỨ BẢY',
    ];
    // Truy cập đọc hằng số
    echo DAYOFWEEK[6]; // THỨ BẢY

    Dùng từ khóa const cũng là cách tạo hằng số cho một lớp ở phần lập trình hướng đối tượng PHP

    Sự khác nhau giữa hằng số và biến (constant và variable)

    Tên hằng số thi không cần bắt đầu bằng ký tự đô la $ như biến.

    Hằng số không thể sử dụng phép gán giá trị như biến (=), giá trị của nó phải được xác định duy nhất tại hàm define.

    Hằng số có thể truy cập bất cứ ở đâu mà không giới hạn phạm vị như biến.

    Ngay sau khi giá trị hằng thiết lập, nó không bị thay đổi hay định nghĩa lại nữa.

    Các hằng số được khai báo sẳn trong PHP từ thuở thiên thu

    PHP cung cấp một số lượng lớn các hằng đã định nghĩa sẵn từ cái thuở thiên thu vạn đại nào rồi, một số hằng rất đặc biệt hay còn được gọi là Magic constant

    Hằng số là gì trong PHP ?

    Ảnh: Cách mà 1 hằng số hoạt động trong bộ nhớ

    Để xem phiên bản PHP của các bạn đang sử dụng có khai báo sẳn những hằng số nào rồi thì sử dụng đoạn code sau nhé.

    $lptech_constant_list = get_defined_constants(true);
    echo '<pre>';
    var_dump($lptech_constant_list);
    echo '</pre>';
    die;

     Còn đây là danh sách có sẳn luôn luôn có được họ cung cấp trên tài liệu đây.

    Tên hằngMô tả
    __LINE__Dòng hiện tại của php file.
    __FILE__

    Tên file đầy đủ của script đang thi hành.

    __DIR__Tên thư mục đầy đủ của file PHP
    __FUNCTION__Lấy tên của hàm đang chạy
    __CLASS__Tên của lớp đang chạy
    __TRAIT__Tên của trait đang chạy
    __METHOD__Lấy tên mothod của lớp
    __NAMESPACE__Lấy tên namspace
    ClassName::clasTên đầy đủ của một lớp

     

    Chúc các bạn có thêm kiến thức lập trình tốt hơn.

    Bài viết được viết và biên soạn bởi LPTech.Asia.

    CÓ THỂ BẠN QUAN TÂM

    Bài Viết Cùng Chuyên Mục

    XEM THÊM
    thumbnail

    Kubernetes bài 6 - Vận hành k8s Day-Two Operations và Quản trị bằng GitOps

    22.05.2026

    Khi cụm Kubernetes của bạn đã được bảo mật cấu hình, tối ưu tài nguyên và thiết lập tự phục hồi, câu hỏi đặt ra là làm sao để duy trì sự ổn định đó trong nhiều năm tiếp theo mà không bị phụ thuộc

    thumbnail

    Kubernetes bài 5 - bảo mật Cloud Native và chuẩn DevSecOps cho K8s

    22.05.2026

    Việc siết chặt an ninh (Hardening) không phải là cấu hình một vài thông số rồi bỏ đó, mà là một tư duy phòng thủ chiều sâu.

    thumbnail

    Kubernetes bài 4 - Tối ưu Resource Auto-Healing và Scale Zero-Downtime

    22.05.2026

    Bài viết này sẽ đi sâu vào các cơ chế ở tầng Kernel giúp hệ thống tự phục hồi, chống lại các đợt tấn công cạn kiệt tài nguyên và cập nhật phiên bản mới mà người dùng không hề hay biết.

    thumbnail

    Kubernetes bài 3 - Bảo mật cấu hình k8s và config Security trên Production

    22.05.2026

    Kubernetes giải quyết bài toán này bằng hai đối tượng chuyên biệt nhưng nếu không hiểu rõ bản chất bảo mật ở tầng dưới, bạn đang tự tay dâng toàn bộ chìa khóa hệ thống cho hacker.

    thumbnail

    Kubernetes bài 2 - Mạng lưới k8s và luồng Traffic ở Packet Level

    22.05.2026

    Pod không chỉ là một container: Rất nhiều người nhầm lẫn Pod 1-1 với Container. Thực chất, Pod là đơn vị triển khai nhỏ nhất, có thể chứa một hoặc nhiều container

    Mục lục bài viết