Trong lập trình PHP, constants (hằng số) là một phần quan trọng giúp bạn lưu trữ các giá trị không thay đổi trong suốt quá trình thực thi của chương trình. Hằng số khác với biến ở chỗ, một khi đã được khai báo, giá trị của hằng số không thể bị thay đổi hoặc tái định nghĩa. Trong bài viết này, thuộc series "Học ngôn ngữ lập trình PHP" trên codetuthub.com, chúng ta sẽ tìm hiểu cách sử dụng hằng số trong PHP, lợi ích của chúng và một số tính năng đặc biệt liên quan.
Hằng số trong PHP là gì?
Hằng số là một loại biến đặc biệt, nhưng khác với biến thông thường, giá trị của hằng số không thể bị thay đổi sau khi đã khai báo. Hằng số thường được sử dụng để lưu trữ các giá trị cố định như tên trang web, cấu hình hệ thống, và các giá trị mà bạn không muốn thay đổi trong suốt thời gian chương trình chạy.
Một điểm khác biệt lớn nữa là hằng số trong PHP không có ký hiệu $ ở trước tên, không giống như biến.
Cách khai báo hằng số trong PHP
PHP cung cấp hai cách khai báo hằng số:
- Sử dụng hàm
define(). - Sử dụng từ khóa
const.
1. Khai báo hằng số bằng define()
Cách phổ biến nhất để khai báo hằng số là sử dụng hàm define(). Cú pháp của hàm này rất đơn giản:
define('TEN_HANG_SO', 'gia_tri');TEN_HANG_SO: Tên của hằng số, phải là một chuỗi hợp lệ và thường được viết in hoa để phân biệt với các biến thông thường.gia_tri: Giá trị của hằng số, có thể là bất kỳ kiểu dữ liệu nào như chuỗi, số, boolean.
Ví dụ:
define('SITE_NAME', 'CodeTutHub');
define('VERSION', 1.0);
define('IS_LIVE', true);
echo SITE_NAME; // Kết quả: CodeTutHub
echo VERSION; // Kết quả: 1.0
echo IS_LIVE; // Kết quả: 1 (True)2. Khai báo hằng số bằng const
Cách thứ hai để khai báo hằng số là sử dụng từ khóa const. Cách này thường được sử dụng trong các class và khi làm việc với namespace.
Cú pháp:
const TEN_HANG_SO = 'gia_tri';Ví dụ:
const MAX_USERS = 100;
echo MAX_USERS; // Kết quả: 100Lưu ý:
constchỉ được sử dụng cho các hằng số đơn giản và chỉ có thể khai báo ở cấp độ class hoặc trong phạm vi toàn cục.define()linh hoạt hơn vì có thể khai báo hằng số trong các cấu trúc điều kiện hoặc vòng lặp.
Quy tắc đặt tên hằng số
Khi đặt tên hằng số, bạn nên tuân theo một số quy tắc và thói quen tốt sau:
- Tên hằng số nên được viết hoa để phân biệt rõ với biến thông thường.
- Sử dụng dấu gạch dưới (
_) để phân tách các từ trong tên hằng số cho dễ đọc. Ví dụ:MAX_FILE_SIZE,API_URL.
Các hằng số kiểu dữ liệu
PHP hỗ trợ nhiều loại dữ liệu khác nhau cho hằng số. Bạn có thể sử dụng chuỗi, số nguyên, số thực, và boolean để làm giá trị cho hằng số.
Ví dụ:
define('USERNAME', 'admin'); // Chuỗi
define('MAX_RETRIES', 5); // Số nguyên
define('PI', 3.14159); // Số thực
define('DEBUG_MODE', false); // Boolean
echo USERNAME; // Kết quả: adminHằng số đặc biệt
PHP cung cấp một số hằng số đặc biệt, được gọi là Magic Constants. Những hằng số này thay đổi giá trị tùy thuộc vào nơi chúng được sử dụng.
Dưới đây là một số hằng số đặc biệt phổ biến:
__LINE__: Trả về dòng hiện tại trong file.__FILE__: Trả về đường dẫn đầy đủ của file hiện tại.__DIR__: Trả về thư mục của file hiện tại.__FUNCTION__: Trả về tên của hàm hiện tại.__CLASS__: Trả về tên của class hiện tại.__METHOD__: Trả về tên phương thức hiện tại.
Ví dụ:
echo __LINE__; // Trả về số dòng hiện tại: 1
echo __FILE__; // Trả về đường dẫn file hiện tại
echo __DIR__; // Trả về thư mục chứa file hiện tạiHằng số mảng (Array Constants)
Từ PHP 5.6 trở đi, bạn có thể khai báo hằng số mảng. Điều này rất hữu ích khi bạn muốn lưu trữ một danh sách các giá trị không thay đổi trong suốt quá trình thực thi.
Ví dụ:
define('FRUITS', ['apple', 'banana', 'orange']);
echo FRUITS[0]; // Kết quả: appleTrong ví dụ trên, hằng số FRUITS lưu trữ một mảng gồm các loại trái cây, và chúng ta có thể truy cập từng phần tử thông qua chỉ mục.
Sự khác biệt giữa define() và const
Mặc dù cả define() và const đều được dùng để khai báo hằng số, chúng có một số khác biệt chính:
- Phạm vi sử dụng:
define(): Có thể được sử dụng ở bất kỳ đâu, kể cả trong điều kiệnif, vòng lặp, và hàm.const: Chỉ có thể được khai báo ở cấp toàn cục hoặc trong các class.
- Tốc độ:
constnhanh hơndefine()vì nó được xử lý trong thời gian biên dịch (compile-time), trong khidefine()được xử lý trong thời gian chạy (runtime).
- Cú pháp:
define()có cú pháp linh hoạt hơn khi khai báo hằng số có điều kiện hoặc trong vòng lặp.
Kết luận
Hằng số là một công cụ quan trọng giúp bạn quản lý các giá trị không thay đổi trong suốt quá trình chạy của chương trình. Qua bài viết này, chúng ta đã tìm hiểu cách khai báo hằng số trong PHP bằng cách sử dụng define() và const, các quy tắc đặt tên hằng số, và một số hằng số đặc biệt mà PHP cung cấp. Hi vọng bài viết này sẽ giúp bạn sử dụng hằng số một cách hiệu quả hơn trong các dự án lập trình của mình.
Hãy tiếp tục theo dõi codetuthub.com để cập nhật thêm nhiều bài viết hữu ích khác về lập trình PHP trong series "Học ngôn ngữ lập trình PHP". Chúc bạn học tốt và thành công!









