Skip to content

Instantly share code, notes, and snippets.

@andrebian
Created November 21, 2013 00:24
Show Gist options
  • Save andrebian/7573806 to your computer and use it in GitHub Desktop.
Save andrebian/7573806 to your computer and use it in GitHub Desktop.
Condicional
<?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 ) {
}
@netojoaobatista
Copy link

@andrebian,

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.

@filhodanuvem
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment