Cách dùng Enum trong PHP 8
Enum là một trong số tính năng cơ bản của nhiều ngôn ngữ lập trình và PHP cũng không ngoại lệ. Dưới đây là mọi điều bạn cần biết về Enum trong PHP.
Enumeration (enum) là một kiểu dữ liệu mà bạn có thể dùng để lưu một giá trị từ một bộ tùy chỉnh. Chúng là lựa chọn hoàn hảo để đại diện cho kiểu tùy chọn mà bạn có thể hiện trong một danh sách thả xuống.
PHP 8.1 hiện đã hỗ trợ enum. Sử dụng enum rất dễ nhưng chúng cung cấp thêm các tính năng được mượn từ lập trình hướng đối tượng.
Tác dụng của Enum
Enum hữu ích khi bạn muốn làm việc với một tập hợp cố định các giá trị liên quan. Ví dụ, bạn có thể dùng một enum để đại diện cho các bộ trong một gói thẻ hoặc kiểu phương tiện.
Enum của PHP khá phức tạp, với một số tính năng được vay mượn từ các lớp (class). Bạn có thể dùng chúng trong kết hợp với gợi ý kiểu để viết code dễ đoán và chặt chẽ hơn.
Enum cơ bản
Enum thường lưu trữ các giá trị vô hướng. Chúng tương tự như các kiểu dữ liệu nguyên thủy của C, dù enum của PHP có thể chứa những giá trị chuỗi cũng như số nguyên. Tuy nhiên, mặc định, những giá trị enum của PHP không có giá trị vô hướng tương đương. Chúng được gọi là enum cơ bản:
enum Season
{
case Spring;
case Summer;
case Autumn;
case Winter;
}
Lưu ý cách PHP dùng lại từ khóa case mà bạn sẽ gặp phải trong lệnh switch. Những giá trị enum đại diện chỉ là tên của các trường hợp. Bạn có thể tham chiếu tới một giá trị enum cụ thể bằng lệnh sau:
EnumTypeName::EnumField
Ví dụ, để tham chiếu tới mùa đông, dùng:
Season::Winter
Bạn có thể gắn giá trị này cho một biến và kiểm tra nó dựa trên những giá trị Season khác:
$favorite = Season::Summer;
if ($favorite == get_current_season()) {
echo "It's my favorite season!";
}
Dùng gợi ý kiểu, bạn có thể giới hạn các tham số hay kiểu trả về tới một enum cụ thể. Điều này giúp tránh một loạt lỗi và việc chỉnh sửa code cũng dễ dàng hơn:
function get_current_season(): Season
{
$day = date("z");
if ($day < 59 || $day > 333) return Season::Winter;
if ($day < 151) return Season::Spring;
if ($day < 243) return Season::Summer;
if ($day < 334) return Season::Autumn;
}
Nếu hàm get_current_season cố gắng trả về một giá trị khác, không phải Season, PHP sẽ phát sinh lỗi TypeError nghiêm trọng.
Enum được hỗ trợ
PHP dùng thuật ngữ “backed enum” để tham chiếu tới một enum cùng với các giá trị. Chúng có thể là số nguyên hoặc chuỗi:
enum Month: int
{
case Jan = 1;
case Feb = 2;
//...
}
Bạn cần khai báo kiểu enum được hỗ trợ và nó phải là int hoặc string. Bạn có thể truy cập giá trị cơ bản bằng cách dùng thuộc tính value chỉ đọc:
echo Month::Jan->value;
Khi dùng enum được hỗ trợ, bạn cũng có thể chuyển đổi chúng, từ giá trị vô hướng tương đương, bằng phương thức from:
var_dump(Month::from(2));
Các phương thức enum
PHP enum cũng có các phương thức, khiến chúng hơi giống một lớp rút gọn. Điều này cho thấy vị trí của PHP, nằm giữa ngôn ngữ theo thủ tục và hướng đối tượng.
Ví dụ, bạn có thể thêm phương thức đơn giản này vào enum Month để lấy số ngày từ một giá trị cụ thể:
/* Note: no leap-year handling! */
function daysInMonth(): int {
if ($this == Month::Feb) return 28;
if (in_array($this, array(Month::Apr, Month::Jun, Month::Sep, Month::Nov))) return 30;
return 31;
}
Lưu ý, bạn có thể dùng $this để tham chiếu tới một giá trị enum cụ thể, giống như bạn dùng $this để tham chiếu tới một đối tượng nhất định. Bạn cũng có thể dùng toán tử ngang bằng chuẩn, ==, để so sánh các giá trị enum.
Enum cũng hỗ trợ các phương thức tĩnh. Ví dụ:
static function random(): Month {
return Month::from(rand(1, count(Month::cases())));
}
Trên đây là những điều bạn cần biết về enum trong PHP. HI vọng bài viết hữu ích với các bạn.
Bạn nên đọc
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:


Cũ vẫn chất
-
Cách mở tab ẩn danh trên Chrome, Cốc Cốc, Firefox,...
Hôm qua -
Cách xem mật khẩu đã lưu trên Chrome, xóa mật khẩu nhanh chóng
Hôm qua -
Cách tải video Youtube đơn giản, nhanh
Hôm qua 26 -
Bài tập C++ có lời giải (code mẫu)
Hôm qua 2 -
58 câu ca dao, tục ngữ, thành ngữ về cuộc sống ẩn chứa những bài học ý nghĩa
Hôm qua -
Bạn có biết ý nghĩa của những biểu tượng emoticon mà chúng ta hay dùng?
Hôm qua 1 -
Mã lệnh GTA Vice City, cheat Grand Theft Auto: Vice City
Hôm qua 7 -
Các màu trái tim trên Messenger có ý nghĩa gì?
Hôm qua 2 -
Cách tăng dung lượng ổ C trong Windows 11/10/8/7
Hôm qua 3 -
Câu nói hay về ăn uống, stt về ăn uống hay và hài hước
Hôm qua 1