0Pricing
PHP Academy · Lekcja

Wyliczenia (enumy)

Definiuj bezpieczne typowo zbiory wartości za pomocą wyliczeń backed i pure w PHP 8.1

Wyliczenia (enumy) to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.

Czym są enumy?

PHP 8.1 wprowadził enumy — specjalny typ, który ogranicza zmienną do zdefiniowanego zbioru nazwanych wartości, dzięki czemu kod jest bardziej wyrazisty i bezpieczny typowo.

Czysty enum (enum jednostkowy)

Czysty enum ma nazwane przypadki bez powiązanej wartości. Doskonale nadaje się do reprezentowania stanu, kierunku lub statusu.

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

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

Enum z wartością bazową

Enum z wartością bazową przypisuje każdemu przypadkowi wartość skalarną (int lub string) — jest to przydatne przy przechowywaniu danych w bazie lub zwracaniu odpowiedzi API.

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

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

From i TryFrom

Surową wartość można z powrotem przekonwertować na przypadek enumu za pomocą from() (zgłasza wyjątek dla nieprawidłowej wartości) lub tryFrom() (zwraca null dla nieprawidłowej wartości).

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

Enumy w deklaracjach typów

Enumów można używać jako deklaracji typów parametrów i wartości zwracanych — PHP wymusza przekazywanie wyłącznie prawidłowych przypadków.

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

Przypadki enumów w match

Enumy doskonale współpracują z wyrażeniami match, umożliwiając wyczerpującą obsługę wszystkich przypadków.

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

Enum implementuje interfejs

Enumy mogą implementować interfejsy, co pozwala uzyskać zachowanie polimorficzne.

<?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);
    }
}

Metody enumów

Enumy mogą zawierać metody (ale nie konstruktor ani modyfikowalne właściwości).

<?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",
        };
    }
}

Stałe enumów

Enumy mogą zawierać stałe (nie przypadki) przechowujące powiązane wartości skalarne.

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

Wyświetlanie przypadków

EnumName::cases() zwraca tablicę wszystkich obiektów przypadków enumu — jest to przydatne przy generowaniu opcji list rozwijanych.

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

Enumy a stałe klas

Enumy zapewniają bezpieczeństwo typów — nie można przypadkowo przekazać liczby całkowitej 1 tam, gdzie oczekiwany jest enum Status. Stałe klas nie dają takiej gwarancji.

Podsumowanie

Enumy wyrażają ustalone zbiory wartości z zachowaniem bezpieczeństwa typów. Czystych enumów należy używać do reprezentowania stanu, a enumów z wartością bazową, gdy potrzebne są wartości z bazy danych lub API. Do bezpiecznego parsowania należy używać tryFrom().

Szybkie sprawdzenie

Co zwraca Color::tryFrom("invalid"), jeśli żaden przypadek nie pasuje?

Często zadawane pytania

Czy lekcja „Wyliczenia (enumy)” jest bezpłatna?

Tak — pełny tekst „Wyliczenia (enumy)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wyliczenia (enumy)”?

Definiuj bezpieczne typowo zbiory wartości za pomocą wyliczeń backed i pure w PHP 8.1 Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć PHP Academy?

Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Wyliczenia (enumy)”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?

Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wyrażenie match i argumenty nazwane
  2. Operator nullsafe i typy sum
  3. Wyliczenia (enumy)
  4. Fibers: współbieżność kooperacyjna
← Powrót do PHP Academy