CodeBlanks Logo Icon CodeBlanks

Enum'lar

PHP kursu · Uzman · Ders 37/54

enum ile tür güvenli sabitler tanımlamayı ve kullanmayı öğrenirsin.

enum ile tür güvenli sabitler

PHP 8.1'de gelen enum, belirli değer kümesini tür güvenli şekilde tanımlar. Bir Suit enum'u kağıt iskambil türlerini listeleyebilir; yanlış değer girmeyi imkansız kılar.

Her case tek bir değeri temsil eder ve bir sabit örneği (instance) gizler. Suit::Heart her zaman aynı nesneyi verir.

Tür bildirimi Suit kullanan bir parametre yalnızca geçerli dört değeri kabul eder; başka değer derleme veya yürütme anında hata verir.

Backed enum ve enum yöntemleri

Bir enum'a int veya string geri değer (backed value) bağlayabilirsin: enum Status: int { case Active = 1; }. Burada int bir skalar türdür; PHP 8.0 ile gelen union types sayesinde parametreler de int|string gibi birleşik türler alabilir.

Backed enum'lar Status::Active->value ile değeri döner, Status::from(1) ile değerden case üretir.

enum içine yöntem de yazılır; match ile case'e göre davranış seçilir. Böylece davranış duruma bağlı kalır.

Uygulama Suit backed enum

Suit adında, string backed bir enum tanımla. Case'ler: Heart = "H", Diamond = "D", Club = "C", Spade = "S".

Aşağıdaki yazdırma satırı çalıştığında H çıktısını vermeli.

Örnek çözümü göster
enum Suit: string {
  case Heart = "H";
  case Diamond = "D";
  case Club = "C";
  case Spade = "S";
}

echo Suit::Heart->value;

Kendini test et

  1. enum case'ini tamamla

    enum Suit {
      case Heart;
      case Diamond;
      case ____;
      case Spade;
    }
    
    Cevabı göster
    enum Suit {
      case Heart;
      case Diamond;
      case Club;
      case Spade;
    }
    
  2. Status::Active->value ne döner?

    enum Status: int {
      case Active = 1;
      case Paused = 2;
    }
    • Active
    • 1
    • Status
    • true
    Cevabı göster

    1 — Doğru. Status::Active case'inin backed değeri 1 olduğu için ->value 1 döner.

  3. enum kavramlarını eşleştir

    enum
    sabit kümesi türü
    case
    enum üyesi
    backed
    değerli enum
    ->value
    backed değere erişim

Uzman bölümündeki tüm dersler