ป้ายกำกับ: Enumerations

เจาะลึก PHP Enums (Enumerations): ฟีเจอร์ที่ช่วยให้โค้ดสะอาดและปลอดภัยยิ่งขึ้นเจาะลึก PHP Enums (Enumerations): ฟีเจอร์ที่ช่วยให้โค้ดสะอาดและปลอดภัยยิ่งขึ้น

ในโลกของการพัฒนา 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 ได้มหาศาลครับ


อ่านเพิ่มเติม