Back-End

25 fev, 2019

Utilizando Operador Ternário no PHP

Publicidade

Fala, Dev!

Você sabe o que é um Operador Ternário no PHP? Ele nada mais é do que uma forma mais enxuta ou curta de usar o comando condicional if.

Uma condição é avaliada, e se ela for verdadeira, atribui-se um valor, e se for falsa, atribui-se outro valor. A sintaxe fica assim:

  • condição ? expressão 1 : expressão 2

Este operador se torna excelente para pequenas e simples condições de validação, onde não pretende-se escrever muitas linhas de código.

Caso de uso real

Trabalhando em um projeto recentemente (utilizando PHP 7.1 e Laravel 5.7), me deparei com o seguinte problema, onde havia um cadastro de cupons e precisava ser dividido em duas telas para exibição, contendo cupons “ativos” e “inativos”.

Seria fácil de resolver criando duas rotas, duas funções no Controller e duas views para renderizar, ou qualquer outra maneira similar (mas todas levam ao mesmo caminho: reescrita de código!).

Mas vamos lá: escrever código com qualidade (tentar) e sem reescrita!

Eis que o operador ternário resolveu meu problema!

Rotas nas opções do menu

Ao chamar a rota no menu, foi passado dois parâmetros juntos, ativos ou inativos e gerada uma rota get, que recebe o argumento passado e envia para o método index do Controller.

Rotas relacionadas aos Cupons

Observação: porém, utilizando as rotas dessa maneira, gerou um conflito e acabou dando problemas ao utilizar os demais métodos do controller chamados na rota Resource, os mesmos sempre redirecionavam para o método index.
Então, para resolver, na rota get foi adicionado o “status”.

Rotas relacionadas aos cupons refatorados

No Controller, no método index, recebemos o status enviado na variável $status e utilizamos o operador ternário para validar, comparando o “status” recebido por “ativos” a variável $status (reescreve o valor da variável status aqui) e recebe TRUE. Caso não seja (sendo assim, “inativos”), recebe false.

Método index do Controller

Assim, se torna possível buscar no banco de dados todos os cupons ativos ou inativos de forma genérica, utilizando uma cláusula where, onde busca pela coluna “active” (que é um boolean) valores true ou false. E envia o resultado para renderizar na mesma View as informações!

E na View ocorreu o caminho inverso com o operador ternário para montar o título. Caso o status for TRUE, o valor passa a ser Ativos. Caso contrário, Inativos (valor FALSE).

Operador ternário sendo utilizado para definir o título

Na View, o título fica assim, conforme a escolha:

Short form (forma curta)

O operador ternário também possui uma versão ainda mais enxuta ou compacta, chamada de “forma curta” ou “short form”.

A sintaxe da short form seria:

  • (condição /expressão 1) ?: expressão 2

Dessa forma, se a condição/expressão for atendida, a própria será o código a ser executado. Caso contrário, executamos a segunda expressão.

Conclusão

Podemos concluir que utilizando o operador ternário, gastamos menos linhas (do que utilizando if/else, por exemplo) e nosso código fica mais “clean”, sem contar que pode ajudar a resolver problemas do nosso dia a dia!

Espero que tenham gostado deste humilde artigo!