0Pricing
PHP Academy · Aula

Enumerações (Enums)

Defina conjuntos de valores com segurança de tipos usando enums com suporte e puros do PHP 8.1.

Enumerações (Enums) é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

O que são enumerações?

O PHP 8.1 introduziu as enumerações, um tipo especial que restringe uma variável a um conjunto predefinido de valores nomeados, tornando o código mais expressivo e seguro quanto aos tipos.

Enumeração pura (enumeração unitária)

Uma enumeração pura tem casos nomeados sem um valor associado. Ela é ótima para representar estados, direções ou status.

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

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

Enumeração com valor associado

Uma enumeração com valor associado atribui um valor escalar, inteiro ou cadeia de caracteres, a cada caso; isso é útil para armazenamento em bancos de dados ou respostas de interfaces de programação de aplicações.

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

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

From e TryFrom

Converta um valor bruto novamente em um caso de enumeração com from(), que lança uma exceção quando o valor é inválido, ou com tryFrom(), que retorna null quando o valor é inválido.

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

Enumeração nas dicas de tipo

Utilize enumerações como dicas de tipo para parâmetros e tipos de retorno; o PHP garante que somente casos válidos sejam transmitidos.

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

Casos de enumeração em match

As enumerações funcionam muito bem com expressões match para um tratamento exaustivo.

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

Enumeração implementa interface

As enumerações podem implementar interfaces, permitindo um comportamento polimórfico.

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

Métodos de enumerações

As enumerações podem ter métodos, mas não podem ter um construtor nem propriedades mutáveis.

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

Constantes de enumerações

As enumerações podem ter constantes, mas não casos, para representar valores escalares relacionados.

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

Listagem de casos

EnumName::cases() retorna uma matriz com todos os objetos de casos da enumeração, o que é útil para gerar opções de listas suspensas.

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

Enumerações versus constantes de classe

As enumerações garantem segurança de tipos: você não pode transmitir acidentalmente o inteiro 1 quando se espera uma enumeração Status. As constantes de classe não oferecem essa garantia.

Resumo

As enumerações expressam conjuntos fixos de valores com segurança de tipos. Utilize enumerações puras para estados e enumerações com valor associado quando precisar de valores para bancos de dados ou interfaces de programação de aplicações. Utilize tryFrom() para uma análise segura.

Verificação rápida

O que Color::tryFrom("invalid") retorna se nenhum caso corresponder?

Perguntas Frequentes

A aula “Enumerações (Enums)” é grátis?

Sim — o texto completo de “Enumerações (Enums)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Enumerações (Enums)”?

Defina conjuntos de valores com segurança de tipos usando enums com suporte e puros do PHP 8.1. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PHP Academy?

Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Enumerações (Enums)”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PHP Academy?

Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Expressão match e argumentos nomeados
  2. Operador nullsafe e tipos união
  3. Enumerações (Enums)
  4. Fibers: concorrência cooperativa
← Voltar para PHP Academy