-1

Aspas simples ou aspas duplas?

criado por Guilherme Oderdenge em 30/01/2012 10:53am
Introdução
Um fato é que nenhum programador sabe tudo. Graças à isso, é muito comum se pegar perguntando: o que utilizar, aspas simples ou duplas? E é pensando nestes questionadores que eu preparei este artigo.

Entenda
Aspas simples são compostas por 1 (um) risquinho: ';
Aspas duplas são compostas por 2 (dois) risquinhos: ".

Padrões
Antes de tudo, eu gostaria de deixar bem claro que este artigo é baseado no meu conhecimento. Desde que o que aqui eu coloco em pratica, sempre deu certo de maneira limpa, organizada e "tecnicamente correta".

Mas, por que "tecnicamente correta"? Antes de desenvolver qualquer projeto ou aplicativo, eu estabeleço um vários padrões. Vou utilizar aqui o caso do include:

<?php include('pagina.php'); ?>

Neste exemplo, eu utilizei as aspas simples. Mas, se a minha consciência desejar, eu posso também utilizar as aspas duplas. Quando eu estou tratando de uma função, eu utilizo sempre aspas simples. Na minha perspectiva, ela se adapta melhor à programação. Mas, neste caso, vai de cada um.

Na prática
Onde mais se faz diferença a utilização dos dois caracteres é na hora de exibir conteúdo através do PHP. Veja o seguinte exemplo:

<?php

    $variavel = 'Olá, mundo!';
    echo '$variavel';

Será que o conteúdo da nossa variável será exibido? Não, ele não será exibido. Se você testar isso no PHP, terá o seguinte resultado impresso:

$variavel

E como todos sabemos, não é isso que queremos imprimir.

Mas e quanto à isto aqui...

<?php

    $variavel = 'Olá, mundo!';

A utilização está correta? Sim, está. Mas eu não aconselho porque existem casos onde queremos utilizar uma variável dentro de outra variável, e então utilizamos as aspas duplas para suprir a nossa necessidade. Veja:

<?php

    $nome = "João";
    $variavel = "Olá, $nome!";
    echo '$variavel';

Agora você conseguiu perceber que utilizamos aspas duplas para tratar a variável $nome? Mas por que se não há nenhuma outra variável dentro de $nome? Bem, lembra lá dos Padrões? Pois é. Acabamos de aplicar este conceito em prática, aqui e agora. ;)

Veja o resultado:

Olá, João!
É claro que é possível se chegar ao mesmo resultado com as aspas simples, mas às vezes não é necessário.

A seguir, um exemplo de como se chegar ao mesmo resultado de uma maneira diferente, utilizando aspas simples:

<?php

    $nome = 'João';
    $variavel = 'Olá, '. $nome .'!';
    echo '$variavel';

Mas aí, vamos combinar, economizou um pouco de código ein? Mas não se engane! Eu falo isso de maneira lírica, porque nem sempre código curto é melhor, ok?

Pois então, podemos imprimir coisas dentro do print também, não é? Podemos. Podemos, inclusive, quando falarmos de um array, exibir resultados através do print_r. E que aspas utilizar nestes casos?

Vejam a estrutura:

<?php

    $nome = "João";
    $sobrenome = "Silva";
    
    print($nome.' '.$sobrenome);

O print, neste caso aí, parece diferente do echo, não é? Pois bem. Ele mais parece do que realmente é. Consigo exibir o nome e o sobrenome do protagonista deste artigo da mesma forma que conseguiria com echo, e genericamente as leis das aspas se aplicam igualmente para este caso.

Sim, a estrutura do print() mais parece a de um include() do que de um echo, mas como estamos exibindo apenas variáveis, não faz diferença qual aspas você vai usar. Na verdade, no caso de apenas variáveis, não há necessidade de aspa alguma.

Seja um array, ou o resultado do banco, ou...
Inserimos um resultado daqui, retornamos outro dali. Mas e agora, que aspas utilizar?

Vamos ao exemplo:

<?php

    $array = array('nome' => 'João',
                   'sobrenome' => 'Silva',
                   'idade' => '30 anos',
                   'profissao' => 'Fundador da NASA');
    
    echo 'Este é $array['nome'] $array['sobrenome'], $array['profissao'] e tem $array['idade']';

Será que conseguiremos exibir o que desejamos? Não, não conseguiremos! Isso gerará um conflito de aspas que nem um milagre é capaz de fazer exibir.

Mas ah, já sei! E se fizéssemos assim, com aspas duplas?:

<?php

    $array = array('nome' => 'João',
                   'sobrenome' => 'Silva',
                   'idade' => '30 anos',
                   'profissao' => 'Fundador da NASA');
    
    echo "Este é $array['nome'] $array['sobrenome'], $array['profissao'] e tem $array['idade']";
Sinto lhe informar, mas também não vai funcionar. Vai gerar outro conflito de aspas. Neste caso, existem dois métodos para termos êxito:

1º método:
<?php

    $array = array('nome' => 'João',
                   'sobrenome' => 'Silva',
                   'idade' => '30 anos',
                   'profissao' => 'Fundador da NASA');
    
    echo 'Este é '.$array['nome'].' '.$array['sobrenome'].', '.$array['profissao'].' e tem '.$array['idade'];

Se você exibir seu(s) resultado(s) da forma acima, com variáveis e um pouquinho de texto, você pode escolher entre aspas simples ou duplas, mas não se esqueça dos padrões e que independente das aspas aplicadas no echo, todas as aspas que à ele pertencerem, deverão pertencer a mesma família. Ou seja, se começar o echo com aspas duplas, termine com aspas duplas; se começar com aspas simples, termine com aspas simples. Mas novamente, não se esqueça dos padrões!

2º método (dica enviada por Lucas Peperaio):

<?php echo "Este é {$array['nome']} {$array['idade']}, {$array['profissao']}, e tem {$array['idade']}";

Considerações finais
E aí, entendeu tudo direitinho? Se sim, eu ficarei muito feliz e o nosso protagonista João Silva poderá finalmente assumir seu cargo de fundador da NASA. Senão, fique à vontade para perguntar.

Se quiser, me siga no Twitter (@chiefgui)! Posso responder suas dúvidas por lá também.

Bom, era isso. Qualquer informação errônea e/ou anomalia no artigo, por favor, entrem em contato.

Uma boa noite à todos! ;)

Comentários:

Mostrando 1 - 4 de 4 comentários
AgenciaHollo disse:
Uma vez eu estava trabalhando com apostrofos (aspas simples) e precisava imprimir um apostrofo na tela que fazia parte do html... Demorei um pouco pra encontrar essa solução que é simples, é só colocar uma barra invertida antes do apostrofo que deve aparecer.
25/10/2013 1:36pm (~6 meses atrás)

João Assef disse:
Parabéns
28/05/2013 9:23pm (~11 meses atrás)

Artigo legal.
Muita gente programa PHP e ainda não sabe dessa diferença.
Tome cuidado, pois em vários ECHOs seus vc está utilizando aspas simples, e assim não irá mostrar o valor da variável.
Na verdade nem precisa de aspas o ECHO.
Até +.
27/03/2013 5:44pm (~1 ano atrás)

pedro laxe disse:
muito bom artigo parabéns!
25/02/2013 8:09am (~1 ano atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)