0Pricing
PHP Academy · Ders

Numaralandırmalar (Enum'lar)

PHP 8.1'in tür güvenli, destekli ve saf enum'larıyla değer kümeleri tanımlayın.

Numaralandırmalar (Enum'lar), CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.

Numaralandırmalar Nedir?

PHP 8.1, bir değişkeni önceden belirlenmiş adlandırılmış değerler kümesiyle sınırlayan özel bir tür olan enum yapısını kullanıma sundu. Bu, kodu daha açıklayıcı ve tür güvenli kılar.

Saf Numaralandırma (Birim Numaralandırması)

Saf bir numaralandırmada, ilişkili değerleri olmayan adlandırılmış durumlar bulunur. Durum, yön veya durum kodu için idealdir.

<?php
enum Status {
    case Active;
    case Inactive;
    case Banned;
}

$s = Status::Active;
echo $s->name; // "Active"

Değer Destekli Numaralandırma

Değer destekli bir numaralandırma, her duruma bir skaler değer (int veya dize) atar; bu, veritabanında saklama veya API yanıtları için kullanışlıdır.

<?php
enum Color: string {
    case Red   = "red";
    case Green = "green";
    case Blue  = "blue";
}

echo Color::Red->value; // "red"

from ve TryFrom

Ham bir değeri from() (geçersiz değerde istisna oluşturur) veya tryFrom() (geçersiz değerde null döndürür) ile yeniden bir numaralandırma durumuna dönüştürün.

<?php
$color = Color::from("red");      // Color::Red
$maybe = Color::tryFrom("purple"); // null

Tür İpuçlarında Numaralandırmalar

Parametreler ve dönüş türleri için tür ipucu olarak numaralandırmaları kullanın; PHP yalnızca geçerli durumların aktarılmasını zorunlu kılar.

<?php
function paint(Color $color): void {
    echo "Painting with ".$color->value;
}
paint(Color::Blue); // "Painting with blue"

match İçinde Numaralandırma Durumları

Numaralandırmalar, tüm durumları kapsayan işlemler için match ifadeleriyle mükemmel uyum sağlar.

<?php
$label = match($status) {
    Status::Active   => "Active user",
    Status::Inactive => "Inactive account",
    Status::Banned   => "Banned",
};
// PHP can warn if cases are unhandled

Numaralandırma Arayüz Uygular

Numaralandırmalar arayüzler uygulayabilir ve böylece çok biçimli davranışa izin verir.

<?php
interface HasLabel {
    public function label(): string;
}

enum Status: string implements HasLabel {
    case Active   = "active";
    case Inactive = "inactive";
    public function label(): string {
        return ucfirst($this->value);
    }
}

Numaralandırma Yöntemleri

Numaralandırmalar yöntemlere sahip olabilir; ancak kurucuya veya değiştirilebilir özelliklere sahip olamaz.

<?php
enum Suit: string {
    case Hearts   = "H";
    case Diamonds = "D";
    case Clubs    = "C";
    case Spades   = "S";

    public function color(): string {
        return match($this) {
            Suit::Hearts, Suit::Diamonds => "red",
            Suit::Clubs,  Suit::Spades  => "black",
        };
    }
}

Numaralandırma Sabitleri

Numaralandırmalar, ilişkili skaler değerler için durumlar yerine sabitlere sahip olabilir.

<?php
enum Direction {
    case North;
    case South;
    const DEFAULT = self::North;
}

Durumları Listeleme

EnumName::cases(), tüm numaralandırma durumu nesnelerinden oluşan bir dizi döndürür; açılır liste seçenekleri oluşturmak için kullanışlıdır.

<?php
$options = Color::cases();
foreach ($options as $c) {
    echo $c->name.": ".$c->value."\n";
}

Numaralandırmalar ve Sınıf Sabitleri

Numaralandırmalar tür güvenliğini zorunlu kılar; bir Status numaralandırmasının beklendiği yerde 1 tamsayısını yanlışlıkla aktaramazsınız. Sınıf sabitleri böyle bir güvence sağlamaz.

Özet

Numaralandırmalar, sabit değer kümelerini tür güvenliğiyle ifade eder. Durumlar için saf numaralandırmaları, veritabanı veya API değerlerine ihtiyaç duyduğunuzda değer destekli numaralandırmaları kullanın. Güvenli ayrıştırma için tryFrom() kullanın.

Hızlı Kontrol

Hiçbir durum eşleşmezse Color::tryFrom("invalid") ne döndürür?

Sıkça Sorulan Sorular

“Numaralandırmalar (Enum'lar)” dersi ücretsiz mi?

Evet — “Numaralandırmalar (Enum'lar)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.

“Numaralandırmalar (Enum'lar)” dersinde ne öğreneceğim?

PHP 8.1'in tür güvenli, destekli ve saf enum'larıyla değer kümeleri tanımlayın. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

PHP Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Numaralandırmalar (Enum'lar)” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Match İfadesi ve Adlandırılmış Bağımsız Değişkenler
  2. Nullsafe Operatörü ve Birleşim Türleri
  3. Numaralandırmalar (Enum'lar)
  4. Fiber'lar: İşbirlikçi Eşzamanlılık
← PHP Academy Sayfasına Dön