Vejo por aí muitos código, de diversos programadores, alguns mais experientes, outros nem tanto. Indiferentemente disto continuo vendo algumas coisas que realmente me deixam intrigado, como é o caso da aspas. E é sobre isto que gostaria de falar um pouco neste post.
Voltando lá para o nosso amigo C, nós tinhamos uma distição bastante clara do uso de aspas, onde usavamos aspas simples para chars e aspas duplas para strings. Pois bem, isso nunca foi realmente um problema e, na verdade, até facilitava a vida.
Já no PHP, nós não temos esta distinção, aspas são aspas, sendo simples ou duplas o resultado será o mesmo.
Calma, não é bem assim. Veja bem, no PHP nós não precisamos criar uma variável e dizer que ela será eternamente de um tipo, podemos a qualquer momento transforma-la em inteiro, char, string, objeto, conforme a nossa vontade e necessidade, simplesmente atribuíndo a ela um novo valor. Mas não é sobre isto que eu quero falar, não agora.
Uma das distições que o PHP faz entre as aspas simples e duplas é, principalmente, na forma que ‘adicionamos’ uma informação contida em uma variável ou retorno de uma função a uma string. É, acho que isto pode não ter ficado claro, permita-me exemplificar.
$string1 = 'Esta é uma string declarada com aspas simples'; $string2 = “Esta é uma string declarada com aspas duplas”;
Olhando assim, você pode até dizer que as duas strings são iguais, mas para o interpretador PHP, na verdade não são. Na $string1 o PHP entende que como ele está usando aspas simples, o valor compreendido entre elas, não possuí nenhuma variável ou função, logo, ele pode executa-lo sem a necessidade de ‘interpretar’ estes valores primeiro; Quanto usamos aspas duplas, como na $string2, o PHP entende que pode existir variáveis ou funções dentro da string e que antes de imprimir este valor ele precisa interpreta-las.
“Mas na $string2 não há nenhuma variável ou função.”
Verdade, mas apenas nós sabemos disto, o PHP não. Ele só vai saber depois, mas daí ele já perdeu tempo e processamento para verificar isto.
Então, se não há variável dentro da string, não use aspas duplas. E ainda assim, é preferível utilizar concatenação, usando aspas simples, como na $string2 do exemplo abaixo.
$string1 = “Olá, $nome. Seja bem vindo(a)!”; $string2 = 'Olá, '. $nome .'. Seja bem vindo(a)!';
Existem outros casos onde você não deve usar aspas duplas e onde você deve usar, vou fazer uma lista.
Eu não devo utilizar aspas duplas…
- Nos valores de uma array:
$array = array('laranja', 'pera', 'banana', 'uva'); - No index de uma array:
$array = array('nome' => 'josé', 'sexo' => 'M'); echo $array['nome']; - Em qualquer lugar onde não seja necessário incluír um valor através de uma variável ou função:
new throw Exception('Executou um erro'); exit('Fim da aplicação.'); str_replace('uva', 'pera', 'José gosta de uva.');
Onde eu devo utilizar aspas duplas…
- Onde não há possibilidade de concatenar valores com apas simples.
- Onde há necessidade de usar sequenciais de escape, normalmente acontece muito em scripts CLI.
Bom, acho que é isto aí. É bom pensar duas vezes antes de usar aspas duplas, afinal, pode parecer um detalhe bobo, mas realmente faz diferença.
