Artigos de Tecnologia e Negócios > Programação

Quando usar == ou === em php?

andre.chaves
andre.chaves

Afinal de contas, quando devemos ou não usar o operador identico (===)? Pra que serve esse operador de comparação? Qual a diferença entre eles?

Ao trabalhar com formulários, é comum a necessidade de validar um email e não existe uma forma padrão de fazer isso. Existem diversas regras de , por exemplo, que haja algo escrito antes do @. Uma forma de verificar isso é usando a função strpos que verifica a posição da primeira ocorrencia de uma string:


public function validaEmail($email) { 
    $posicao = strpos($email,@) ;

    if($posicao == 0) { //exibe uma menssagem de erro pra view dizendo que faltou a conta 
    } 
}

Mas, caso o usuario não digite nem o @ precisamos, também, dizer que aquele campo é especifico para email! No caso de não haver ocorrencia de string, a função strpos() retorna null. Portanto, para validar, também, este caso teriamos:


public function validaEmail($email) { 
    $posicao = strpos($email,@) ;

    if($posicao == 0) { //exibe uma menssagem de erro dizendo que faltou a conta// } 
        if($posicao == null) { //exibe uma menssagem de erro dizendo que aquele campo é especifico para email// 
        } 
    }
}

Beleza, nossa lógica faz todo sentido! se o @ estiver na posição 0 da string $email falamos que faltou a conta. Se não houver @ na variavel $email exibimos outra mensagem dizendo que nosso usuario preencheu o campo errado!

Mas, se rodarmos esse código, as duas menssagens serão exibidas!

Isso acontece porque, na tabela de comparação de tipos do php o valor 0 é igual a null! Precisamos, de alguma forma, comparar valores de uma forma mais especifica onde o tipo faça diferença. Neste caso, 0 seria apenas um inteiro qualquer, não outra representação de null.

E é aqui que devemos usar o operador identico ===! Com este operador, diferente do ==, levamos em conta não só o valor mas também o tipo na hora da comparação.

Então, nossa validação de email deve ser escrita um pouco diferente:


public function validaEmail($email) { 
    $posicao = strpos($email,@) ;

    if($posicao === 0) { //exibe uma menssagem de erro dizendo que faltou a conta// } 
        if($posicao === null) { //exibe uma menssagem de erro dizendo que aquele campo é especifico para email// 
        } 
    }
}

Agora sim somente uma menssagem será exibida. Se a posição for zero, mostramos a menssagem dizendo que faltou a conta. Se não houver @ mostramos a menssagem dizendo que o campo é especifico para email.

Uma pequena diferença de tipos, pode causar um grande impacto nas funcionalidades do nosso sistema.

E você? O que achou do operador identico? Compartilhe com a gente sua opinião!

Para saber mais conceitos em PHP, aqui na Alura temos uma formação focada no desenvolvimento PHP

Leia também:

Artigos de Tecnologia e Negócios > Programação

Cursos profissionais de Programação é na Alura, comece agora!

  • 1122 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1122 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1122 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1122 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana