Khái niệm về hằng số trong PHP
Hằng số là một tên (dịnh danh) cho một giá trị đơn giản.
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 thi hành script.
Mặc định hằng số có phân biệt chữ hoa chữ thường.
Thông thường viết code thì ta nên đặt tên hằng số bằng các ký tự IN HOA.
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.
^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
Định nghĩa hằng số với hàm define
Để định nghĩa một hằng số bạn phải sử dụng hàm define()
với cú pháp của hàm đó như sau:
define ( string $name , mixed $value) : bool
Trong đó $name
là tên hằng số, và $value là giá trí gán cho hằng số,
giá trị hằng số phải là một trong các kiểu:
boolean
,
integer
,
float
và string
.
Để 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("FIRSTWEEKDAY", 'MONDAY'); echo FIRSTWEEKDAY, PHP_EOL; //Lấy hằng số bằng cách chỉ ra tên $firstweek = 'FIRSTWEEKDAY'; echo constant($firstweek), PHP_EOL; // Lấy hằng số có tên lưu trong biến $firstweek ?>
Khi bạn định nghĩa một hằng số, nếu trước đó đã định nghĩa sẽ dẫn tới lỗi. Khi cần thiết, bạn có thể
kiểm tra xem một hằng số đã được định nghĩa hay chưa bằng hàm defined($ten-hang-so);
// Kiểm tra xem hằng số MYCOLOR có tồn tại không, nếu không // thì bắt đầu định nghĩa if (!defined('MYCOLOR')) { define('MYCOLOR', 'Green'); }
Định nghĩa hằng với từ khóa const
Với 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
- Tên hằng số thi không cần bắt đầu bằng ký tự dollar
$
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 biệt (Magic Constant) trong PHP
PHP cung cấp một số lượng lớn các hằng đã định nghĩa sẵn,
một số hằng rất đặc biệt gọi là Magic constant
. Dưới đây là một số hằng Magic (ma thuật):
Tên hằng | Mô 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::clas |
Tên đầy đủ của một lớp |
Các hằng số định nghĩa trước trong PHP
Khi PHP hoạt động có vô số hằng số, một số định nghĩa bởi nhân của PHP, một số do các thành phần mở rộng
(Extension), để lấy các hằng số đã định nghĩa thì dùng hàm get_defined_constants
, nó
trả về mảng các hằng số có trong PHP đang hoạt động của bạn
$allConst = get_defined_constants(true); print_r($allConst);
Một số hằng số đã định nghĩa trước bởi nhân PHP tham khảo tại:
reserved.constants,
ví dụ PHP_EOL
là ký tự xuống dòng.
Source code: const (Git), hoặc tải rphp-const