No PHP, os operadores de comparação de triplo-igual (===) devem ser usados ​​em vez de duplo-igual (==), a menos que haja um motivo específico para usar o último?


Melhor resposta

Absolutamente!

Em PHP, Javascript ou qualquer outra linguagem que ofereça verificações de equivalência soltas e estritas, é melhor usar a versão estrita, a menos que você tenha um motivo convincente para fazer o contrário . (Na verdade, alguns desenvolvedores de software insistem em que você não use verificações de igualdade vagas!) Existem várias razões para isso.

Em primeiro lugar, usar a equivalência flexível pode levar a uma classe inteira de defeitos isso pode ser evitado com equivalência estrita. Embora o PHP seja particularmente conhecido por ser “útil”, a maioria das linguagens com tipagem dinâmica são tolerantes quando se trata de conversão entre tipos. Os dados que passam pela equivalência solta podem se comportar bem em muitos casos e ir muito mais fundo no código antes de disparar um erro ou causar um efeito colateral inesperado. As verificações estritas de equivalência, por sua vez, são mais semelhantes aos tipos de verificações que ocorrem em linguagens tipadas estaticamente; é muito menos provável que os dados em um formato incorreto fiquem descontrolados.

Um problema relacionado é como a equivalência frouxa torna o código mais difícil de raciocinar. Se você usar a equivalência estrita, poderá fazer muitas suposições sobre os dados que passam na verificação. O mesmo não é verdade se você usar a equivalência livre. Considere os dois exemplos a seguir.

// Example #1: strict

if ( $i === 1 ) {

doThing( $i );

}

// Example #2: loose

if ( $i == 1 ) {

doThing( $i );

}

No primeiro exemplo, podemos assumir que a função “doThing” está sendo chamada com um valor numérico e precisamos apenas considerar como essa função trataria os números.

No segundo exemplo, porém, “doThing” pode ser chamado com uma variedade de tipos, incluindo strings ou valores booleanos. Ao ler a função “doThing”, você precisa considerar como cada tipo pode ser tratado, incluindo todas as várias regras (e às vezes sem sentido) relacionadas às conversões de tipo implícitas. Isso é muito para controlar na sua cabeça!

Além disso, ao usar a equivalência livre, você não está sendo explícito. Isso não apenas contribui para a dificuldade de raciocínio por meio da lógica, mas também falha em capturar os requisitos reais que a lógica supostamente representa. Com o exemplo # 2 acima, não há como saber se o programador original esperava valores numéricos, valores de string, valores booleanos ou alguma combinação dos mesmos. Isso torna o código uma dor de cabeça para manter.

Por último, embora a conversão implícita de tipo possa ser conveniente, há pouca necessidade disso em um ambiente profissional. Você sempre pode definir padrões razoáveis ​​ou forçar manualmente os dados para o tipo apropriado. Isso pode exigir mais código e mais esforço, mas também aumenta muito a confiabilidade do seu código.

Resposta

Se você sabe que dois valores devem ter o mesmo tipo, sim, use Strict ( ===) excessivamente solto (==). Strict tem melhor desempenho porque não precisa fazer a conversão de tipo como o loose.

Por exemplo 1 == “1” retorna verdadeiro porque essa string é convertida em um número para verificar a igualdade

Enquanto 1 === “1” retorna falso

Igualdade estrita basicamente vai “não é o mesmo tipo? FALSE “

Espero que isso ajude

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *