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.
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
- Tham số:
$name
: tên của hằng.$value
: giá trị của hằng.$case_insensitive
: không phân biệt chữ hoa chữ thường thì là true, ngược lại là false.- Giá trị trả về: TRUE hoặc FALSE.
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.
Ả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ằ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 |
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.