-
-
Save andrebian/7573806 to your computer and use it in GitHub Desktop.
<?php | |
// Exemplo de implementação recebendo um post sem tratamento, o que quero esclarescer é forma de realizar a condicional apenas | |
$itemRecebidoViaPost = $_POST['item']; | |
// Primeira forma | |
if ( $itemRecebidoViaPost == 'item-desejado' ) { | |
} | |
// Segunda forma | |
if ( 'item-desejado' == $itemRecebidoViaPost ) { | |
} |
Diferença não faz, mas ajuda na legibilidade do código. Eu por exemplo sou adepto da primeira forma, mas pra muitos programadores, principalmente iniciantes, sempre recomendo ser o mais explícito possível, utilizando a segunda forma, $var === false ao invés de ! $var, etc.
Entende o que quero dizer? Quando se está debugando o código é mais fácil compreender $var === false do que ! $var. Programar é como escrever, escreva sempre da melhor forma possível e será sempre compreendido. Utilize abreviações e gírias que poderá ter problemas de comunicação.
De toda forma, sempre é bom lembrar: vale à risca o que está descrito nas PSRs http://www.php-fig.org/
Eu considero a 2ª opção uma boa prática. Até pq já fiz contribuições no ZF2 e Doctrine usando a 1ª opção e na revisão me corrigiram falando pra usar a 2ª.
Eu gosto e prefiro a primeira forma. Faço da primeira forma já faz tanto tempo, que acho estranho a segunda forma, mas é uma questão pessoal apenas.
Pensando em boas práticas, como levantado pelo @danizord, acho que a segunda forma é interessante e adequada. Alguns frameworks de testes unitários, como PHPUnit ou JUnit utilizam a segunda forma, onde o primeiro argumento é o valor esperado e o segundo o valor atual.
Porém, também não é regra nos frameworks. Se observar o Microsoft TestTools, a API do Assert está mais para o primeiro formato, que para o segundo. No caso do Assert.equals, ela considera dois objetos, independentemente da ordem. Mas se observar bem, o método Assert.instanceOfType utiliza a primeira forma mais explicitamente.
Especificamente no que se refere ao PHP, por não existir uma padronização e nenhuma documentação de referência de boas práticas sobre esse tema, ficamos na questão de preferência pessoal ou, como no caso de algum código como mencionado pelo @danizord, o padrão adotado para aquele código específico.
Lendo códigos de alguns frameworks sempre me deparei com a segunda forma, que pra mim soa bem estranha. Mas a resposta que me deram na época foi a mesma que o @juniorb2ss disse, por motivos históricos alguns devs fazem valor_constante == $variavel
para evitar erros silenciosos no código.
Em baixo nivel, é impossível haver otimização nesse caso, o parser sempre precisaria ver os valores dos dois lados da expressão.
Então como disseram, é algo bem pessoal.
A primeira forma, falando visualmente é a mais correta. Pois levando em consideração a lógica da pergunta "LAPIS é BRANCO?" invés de "BRANCO É O LAPIS?" fica meio sem nexo. A segunda forma evita o erro de digitação, caso seja colocado $lapis = 'branco' que a resposta sera sempre verdadeira, retornando mal funcionamento do seu código. Mas se fosse 'branco' = $lapis seria retornado um erro. Particularmente acho o segundo método feio, porém, útil para novatos, que acabam esquecendo da equação '=='