ในโลกของการพัฒนา PHP ยุคใหม่ (PHP 8.1 เป็นต้นไป) การจัดการกับชุดข้อมูลที่แน่นอน เช่น สถานะออเดอร์ หรือประเภทของผู้ใช้งาน ได้เปลี่ยนไปในทางที่ดีขึ้นมากด้วยการมาถึงของ Enums (Enumerations) ซึ่งเข้ามาทดแทนการใช้ Class Constants แบบเดิม ๆ
1. Pure Enums (แบบพื้นฐาน)
Pure Enums ใช้สำหรับระบุชื่อ Case โดยไม่มีค่าเบื้องหลัง เหมาะสำหรับการตรวจสอบสถานะภายในโปรแกรม
enum Status {
case Draft;
case Published;
case Archived;
}
2. Backed Enums (แบบมีค่า String/Int)
เมื่อต้องการเก็บค่าลง Database หรือส่งผ่าน API เราสามารถใช้ Backed Enums เพื่อผูกค่าจริงไว้กับแต่ละ Case ได้
enum UserRole: string {
case Admin = "admin";
case Editor = "editor";
case User = "user";
}
3. การแปลงค่ากลับมาเป็น Enum (from / tryFrom)
ฟีเจอร์เด่นคือการแปลงค่าจากภายนอกกลับมาเป็น Enum Object ได้อย่างปลอดภัย
// คืนค่า null หากไม่พบค่าที่ตรงกัน (แนะนำ)
$role = UserRole::tryFrom("guest") ?? UserRole::User;
4. การใส่ Logic ด้วย Methods
เราสามารถเขียน Function ไว้ข้างใน Enum เพื่อความสะดวกในการใช้งาน
enum OrderStatus: string {
case Pending = "P";
case Shipped = "S";
public function label(): string {
return match($this) {
self::Pending => "รอดำเนินการ",
self::Shipped => "จัดส่งแล้ว",
};
}
}
สรุปข้อดีของการใช้ Enums
- Type Safety: ป้องกันการส่งค่าที่ผิดพลาดเข้าสู่ฟังก์ชัน
- Readability: โค้ดสื่อความหมายชัดเจนขึ้น
- Maintainability: แก้ไขจุดเดียว มีผลทั่วทั้งระบบ
- IDE Support: ระบบช่วยแนะนำโค้ดทำงานได้เต็มประสิทธิภาพ
การเปลี่ยนมาใช้ Enums คือการตัดสินใจที่คุ้มค่าเพื่อทำให้โปรเจกต์ PHP ของคุณทันสมัยและลดโอกาสเกิด Bug ได้มหาศาลครับ
อ่านเพิ่มเติม