DEV Community

Cover image for O que o Jogo do Bicho tem a ver com o PHP 8.1?
Luís Von Muller
Luís Von Muller

Posted on

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);
Enter fullscreen mode Exit fullscreen mode

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.';
  }
}
Enter fullscreen mode Exit fullscreen mode

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 */
}
Enter fullscreen mode Exit fullscreen mode

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

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

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
Enter fullscreen mode Exit fullscreen mode

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

Discussion (5)

Collapse
gabrielrodrigodesbesell profile image
Gabriel Rodrigo Desbesell

Excelente artigo. Parabéns Luís.

Collapse
santanaluc94 profile image
Lucas Teixeira dos Santos Santana

Parabéns! Contextualização muito boa!

Collapse
tttecnology profile image
EronAlves1996

Ótimo artigo!
Parabéns Luis!

Collapse
guicoder profile image
Guilherme

Bom demais ! (〜 ̄▽ ̄)〜

Collapse
Sloan, the sloth mascot
Comment deleted