Operadores de Comparação são frequentemente negligenciados em PHP, o que pode levar a muitos resultados inesperados. Um
desses problemas decorre de comparações estritas (comparações entre booleanos e inteiros).
Quando as declarações ‘if/else’ são usadas em uma função ou classe, é um equívoco comum pensar que ‘else’ precisa ser
usado em conjunto para declarar resultados em potencial. Entretanto se o resultado serve para definir o valor a ser
retornado ‘else’ não é necessário já que ‘return’ irá terminar a função, fazendo com que o uso de ‘else’ se torne
discutível.
Estruturas de decisão são uma excelente forma de evitar escrever intermináveis estruturas condicionais, mas existem
alguns pontos sobre os quais deve-se ficar atento:
Estruturas de decisão só comparam valores, e não tipos (equivalente a ‘==’)
Elas passam por caso a caso até que uma correspondencia seja encontrada, então default é usado (caso esteja definido)
Sem que haja um ‘break’, elas continuarão a executar cada caso até que encontrem um break/return
Dentro de uma função o uso de ‘return’ remove a necessidade do uso de ‘break’ já que isso encerra essa função
Quando estiver usando namespaces você pode reparar que funções internas ficam escondidas por funções que você mesmo
escreveu. Para corrigir isso refira a funções globais através do uso de uma contra-barra antes do nome da função.
Tipos de string são uma característica constante na comunidade PHP, mas talvez essa seção possa explicar as diferenças
entre os tipos de strings e seus usos e benefícios.
Aspas Simples
As aspas simples são utilizadas para indicar uma ‘string literal’. Strings literais não tentam analisar caracteres
especiais ou variáveis.
Se estiver usando aspas simples, você pode digitar um nome de variável em uma string assim: 'some $thing' e você verá
a saída exata some $thing. Se você estiver usando aspas duplas, o motor da linguagem tentará avaliar a variável “$thing” e então
exibirá erros se nenhuma variável for encontrada.
Aspas duplas são o canivete suíço das strings, mas são mais lentas devido a interpretação das strings. Ele não só irá
analisar as variáveis como mencionado acima mas também todos os tipos de caracteres especiais, como \n para nova
linha, \t para identação, etc.
Aspas duplas que contém variáveis; Isto é chamado “interpolação”.
Quando usando interpolação, são comuns os casos onde a variável pode estar colada com outro
caracter. Isso fará com que o PHP não consiga interpretar essa variável pelo fato dela estar sendo camuflada.
Para corrigir esse problema envolva a variável em um par de chaves.
A Sintaxe Nowdoc foi introduzida no PHP 5.3 e internamente se comporta da mesma forma que as aspas simples exceto que é
adequada para o uso de strings de múltiplas linhas sem a necessidade de concatenação.
A Sintaxe Heredoc se comporta internamente da mesma forma que as aspas duplas exceto que é adequada para o uso de strings
de múltiplas linhas sem a necessidade de concatenação.
Há um mito por aí que usar aspas simples em strings são interpretadas mais rápida do que usar aspas duplas. Isso não é fundamentalmente falso.
Se você estiver definindo uma string única e não concatenar valores ou qualquer coisa complicada, então aspas simples ou duplas serão idênticas. Não será mais rápido.
Se você está concatenando várias strings de qualquer tipo, ou interpolar valores em uma string entre aspas duplas, então os resultados podem variar. Se você estiver trabalhando com um pequeno número de valores, a concatenação é minuciosamente mais rápida. Com um monte de valores, interpolação é minuciosamente mais rápida.
Independentemente do que você está fazendo com strings, nenhum dos tipos vai ter qualquer impacto perceptível sobre a sua aplicação.
Tentar reescrever código para usar um ou o outro é sempre um exercício de futilidade, de modo a evitar este micro-otimização, a menos que você realmente compreenda o significado e o impacto das diferenças.
Operadores Ternários
O uso de operadores ternários é uma ótima forma de condensar seu código, mas eles são geralmente usados em excesso.
Apesar de operações ternárias poderem ser agrupadas e aconselhado usar uma por linha para aumentar a legibilidade.
// vs
Para usar ‘return’ em um operador ternário utilize a sintaxe correta.
Note que você não precisa usar um operador ternário para retornar um valor booleano. Um exemplo disto seria.
Isso também pode ser dito para as operações (===, !==, !=, == etc).
Utilizando parênteses com operadores ternários para formato e função
Quando se utiliza um operador ternário, os parênteses podem melhorar a legibilidade do código e também incluir as uniões
dentro de blocos de instruções. Um exemplo de quando não há nenhuma exigência para usar de parênteses é:
O uso de parênteses também nos dá a capacidade de criar união dentro de um bloco de declaração onde o bloco será
verificado como um todo. Tal como este exemplo abaixo que retornará verdadeiro se ambos ($a == 3 e $b == 4) são
verdadeiras e $c == 5 também é verdadeiro.
Outro exemplo é o trecho de código abaixo que vai returnar true se ($a != 3 e $b != 4) ou $c == 5.
As vezes programadores tentam tornar seu código mais limpo declarando variáveis predefinidas com um nome diferente. O
que isso faz na realidade e dobrar o consumo de memória do script. No exemplo abaixo, digamos que uma string de exemplo
contém 1MB de dado válido, copiando a variável você aumenta o consumo de memória durante a execução para 2MB.