O que o Jogo do Bicho tem a ver com o PHP 8.1?

O PHP foi atualizado em uma Major Update para a versão 8.1. O que isso tem a ver com o Jogo do Bicho? Vamos descobrir juntos. Mas, resumidamente, agora se você quer implementar o jogo do bicho em #PHP a nova nova versão deixa tudo mais seguro e fácil.

Mas para atestar o supracitado, vamos implementar o Jogo do Bicho em PHP antes do 8.1 passo a passo e ao mesmo tempo compará-lo com as facilitações providas pelo PHP 8.1.
(◡‿◡✿)

Como "todos sabemos" o Jogo do Bicho possuí 25 bichos (animais). Então para isso precisaríamos alguma maneira de criar as possíveis "Apostas".

Antes do PHP 8.1

Antecedente ao PHP 8.1, não existia "Enumerações" (ENUM) e pessoas desenvolvedoras precisavam (deviam) fazer mais ou menos o seguinte:

class ApostarNoBixo
{
    const AVESTRUZ = 1; /* 1 */
    const AGUIA = 2; /* 2 */
    /* ...restante dos bichos ... */
    const URSO = 23;/* 23 */
    const VEADO = 24;/* 24 */
    const VACA = 25;/* 25 */
}
$apostandoNoBixo = new ApostarNoBixo();
jogarNoBixo($apostandoNoBixo::AGUIA);

Parece bom? - Sim. É uma implementação válida (muito similar a ideia de magic strings), todavia, a ideia principal é que não usemos classes para definir tipos, no final de tudo, a função em questão, que executa a ação "jogarNoBixo" (ou seja, faz mesmo a aposta) ainda precisa receber um número inteiro e não um estritamente um tipo compatível a uma Aposta do Jogo Do Bicho (Inteiro de 1 até 25).

function jogarNoBixo(int $aposta): string {
  if($aposta <= 25 && $aposta > 0)  {
    return match ($aposta) {
      23 => 'Acertou' . PHP_EOL, 
      default => "Errouuuuu" . PHP_EOL
    };
  } else {
    return 'Aposta inválida, dinheiro do Bixeiro.';
  }
}

Com o PHP 8.1 ( ˘ ³˘)♥

Com o PHP 8.1 foi trazido a vida a ideia das enumerações, isto é: criar um "tipo" e facilitar ainda mais a nossa vida, até mesmo mantendo retro contabilidade com implementações antigas através de backed enums.

E como isso funciona?

Esse exemplo (é um backed enum) e já deve te fornecer entendimento completo da ideia...

enum PossiveisApostasNoBicho: int
{
    case AVESTRUZ = 1; /* 1 */
    case AGUIA = 2; /* 2 */
    /* ...restante dos bichos ... */
    case URSO = 23;/* 23 */
    case VEADO = 24;/* 24 */
    case VACA = 25;/* 25 */
}

Daora. Mas e a função? (☞ಠ_ಠ)☞

function jogarNoBixo(PossiveisApostasNoBicho $aposta): string
{
  return match ($aposta) {
    PossiveisApostasNoBicho::URSO, 23 => 'Acertou' . 
    default => "Errouuuuu" . PHP_EOL 
  };
}

Além da função agora ter um tipo em seu argumento único não primitivo, também ficou mais curta. E além disso, para usar ela não precisaríamos instanciar um objeto para isso, só faríamos o seguinte:

print "Resultado". jogarNoBixo(PossiveisApostasNoBicho::URSO); // Acertou

Massa né? Vem pro twitter para acompanhar o próximo: ★ Luís Von Müller #bolhaDev

눈_눈 Aviso:

Através deste artigo, em momento algum o Autor deseja fazer Endosso do Jogo do Bicho ou de Jogos de Azar. O autor apenas julga conveniente e facilitador (lê-se torna mais acessível) contextualizar culturalmente ao Brasil 🇧🇷.


Créditos:
TopPng pelas correntes que PHP veste
PHP pelo elefante
PHP pela 8.1

Parte da arte de fundo publicada publicamente sem licença de uso nenhuma explicitada pelo criador, utilizada na capa do artigo foi criada por: @aguiarbraz - neste tweet

23