Enum trong PHP (PHP Enum)
Enum (viết tắt của Enumeration) là một kiểu dữ liệu đặc biệt trong PHP, được giới thiệu từ phiên bản PHP 8.1. Enum cho phép bạn định nghĩa một tập hợp các hằng số có tên, giúp mã nguồn của bạn trở nên rõ ràng và dễ bảo trì hơn.
Khái niệm cơ bản về Enum
Định nghĩa Enum
Enum trong PHP được định nghĩa bằng từ khóa enum
, theo sau là tên Enum và một cặp dấu ngoặc nhọn chứa các trường hợp (cases) của Enum.
Cú pháp
enum Status {
case Pending;
case Approved;
case Rejected;
}
Sử dụng Enum
Bạn có thể sử dụng Enum để gán giá trị cho các biến và so sánh chúng trong các cấu trúc điều kiện.
Ví dụ
$status = Status::Pending;
if ($status === Status::Approved) {
echo "The status is approved.";
} else {
echo "The status is not approved.";
}
Enum có giá trị (Backed Enum)
Backed Enum là một loại Enum có thể gán các giá trị nguyên thủy (như chuỗi hoặc số nguyên) cho các trường hợp của nó. Điều này hữu ích khi bạn cần ánh xạ các giá trị Enum với các giá trị trong cơ sở dữ liệu hoặc các hệ thống bên ngoài.
Cú pháp
enum Size: string {
case Small = 'S';
case Medium = 'M';
case Large = 'L';
}
Sử dụng Backed Enum
Bạn có thể truy cập giá trị của một trường hợp Enum bằng cách sử dụng thuộc tính value
.
Ví dụ
$size = Size::Medium;
echo $size->value; // Output: M
Phương thức trong Enum
Enum trong PHP có thể chứa các phương thức để thực hiện các hành động liên quan đến các trường hợp của nó.
Cú pháp
enum Status {
case Pending;
case Approved;
case Rejected;
public function label(): string {
return match($this) {
self::Pending => 'Pending Approval',
self::Approved => 'Approved',
self::Rejected => 'Rejected',
};
}
}
Sử dụng phương thức trong Enum
Bạn có thể gọi các phương thức của Enum giống như cách bạn gọi các phương thức của một đối tượng.
Ví dụ
$status = Status::Pending;
echo $status->label(); // Output: Pending Approval
Kết luận
Enum là một tính năng mạnh mẽ trong PHP, giúp bạn định nghĩa các tập hợp hằng số có tên một cách rõ ràng và dễ bảo trì. Bằng cách hiểu và sử dụng Enum, bạn có thể viết mã PHP sạch hơn và dễ hiểu hơn.