0Pricing
PHP Academy · Lezione

Enumerazioni (enum)

Definire insiemi di valori con controllo dei tipi usando gli enum backed e puri di PHP 8.1.

Enumerazioni (enum) è una lezione PHP Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento PHP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso PHP Academy include 4 lezioni in totale.

Che cosa sono gli enum?

PHP 8.1 ha introdotto gli enum: un tipo speciale che limita una variabile a un insieme predefinito di valori denominati, rendendo il codice più espressivo e sicuro dal punto di vista dei tipi.

Enum puro (Unit Enum)

Un enum puro ha casi denominati senza un valore associato. È ideale per rappresentare stati, direzioni o status.

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

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

Enum con valore associato

Un enum con valore associato assegna un valore scalare, intero o stringa, a ogni caso; è utile per la memorizzazione nei database o nelle risposte delle API.

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

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

from e tryFrom

Converta un valore grezzo nel caso corrispondente di un enum con from(), che genera un'eccezione se il valore non è valido, oppure con tryFrom(), che restituisce null in caso di valore non valido.

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

Enum nelle dichiarazioni di tipo

Utilizzi gli enum nelle dichiarazioni di tipo dei parametri e dei valori restituiti: PHP garantisce che vengano passati solo casi validi.

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

Casi degli enum in match

Gli enum si combinano perfettamente con le espressioni match per gestire tutti i casi.

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

Enum che implementa un'interfaccia

Gli enum possono implementare interfacce, consentendo un comportamento polimorfico.

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

Metodi degli enum

Gli enum possono avere metodi, ma non costruttori o proprietà mutabili.

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

Costanti degli enum

Gli enum possono avere costanti, ma non casi, per rappresentare valori scalari correlati.

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

Elencare i casi

EnumName::cases() restituisce un array di tutti gli oggetti che rappresentano i casi dell'enum, utile per generare le opzioni di un menu a discesa.

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

Enum e costanti di classe

Gli enum garantiscono la sicurezza dei tipi: non è possibile passare accidentalmente l'intero 1 quando è richiesto un enum Status. Le costanti di classe non offrono la stessa garanzia.

Riepilogo

Gli enum rappresentano insiemi fissi di valori garantendo la sicurezza dei tipi. Utilizzi gli enum puri per gli stati e gli enum con valore associato quando servono valori per database o API. Utilizzi tryFrom() per un'analisi sicura.

Verifica rapida

Che cosa restituisce Color::tryFrom("invalid") se nessun caso corrisponde?

Domande Frequenti

La lezione «Enumerazioni (enum)» è gratuita?

Sì — il testo completo di «Enumerazioni (enum)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso PHP Academy, passa a CoddyKit PRO. Il corso PHP Academy include 4 lezioni in totale.

Cosa imparerò in «Enumerazioni (enum)»?

Definire insiemi di valori con controllo dei tipi usando gli enum backed e puri di PHP 8.1. Eserciti PHP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare PHP Academy?

Non è richiesta alcuna esperienza precedente. PHP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Enumerazioni (enum)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione PHP Academy?

Sì. Ogni lezione PHP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Espressione match e argomenti denominati
  2. Operatore nullsafe e tipi unione
  3. Enumerazioni (enum)
  4. Fibers: concorrenza cooperativa
← Torna a PHP Academy