PHP Comentários
Um comentário é um texto dentro do código que o PHP ignora completamente. Ele não muda o que o programa faz: serve para as pessoas. Para você mesmo, daqui a três meses, lembrar por que fez daquele jeito; para quem trabalha com você entender o código; e para "desligar" uma linha sem apagá-la. Nesta aula você vai conhecer as quatro formas de comentar no PHP e uma armadilha nova do PHP 8.
- Comentários de uma linha:
//e#. - Comentários de várias linhas:
/* … */. - Comentários de documentação (PHPDoc):
/** … */. - Por que
#[…]não é comentário no PHP 8. - Como "desligar" uma linha de código e as armadilhas do
?>e dos comentários dentro de comentários. - O que escrever num bom comentário.
A ideia: o lápis na margem do livro
Pense numa receita de bolo da sua avó, com anotações a lápis na margem: "usar a forma grande", "no forno da tia, 10 minutos a menos". Quem faz o bolo lê as anotações; o bolo não "lê" nada. As anotações não mudam a receita, mas ajudam muito quem vai segui-la.
Os comentários são essas anotações. O PHP pula tudo o que está marcado como comentário, como se não existisse. Quem lê é gente.
Comentários de uma linha: // e #
Duas barras // dizem ao PHP: "daqui até o fim da linha, ignore". O # (cerquilha, "jogo da velha") faz exatamente a mesma coisa:
<?php // Programa da lista de compras da Ana echo "Lista de compras\n"; // título # Este também é um comentário de uma linha echo "- pão\n";
$ php tipos.php Lista de compras - pão
- // Programa da lista…
- Um comentário ocupando a linha inteira. O PHP pula.
- echo "Lista de compras\n"; // título
- Código e depois um comentário, na mesma linha. O PHP executa o
echoe ignora o que vem a partir do//. - # Este também…
- Mesmo efeito, com
#.
Repare na saída: nenhum comentário apareceu. Eles existem só no arquivo.
// ou #?
Para o PHP, tanto faz. Mas quase todo código PHP moderno usa //, e os guias de estilo da comunidade (veja Padrões PSR) também. Use //. O # aparece em códigos antigos e no shebang (#!/usr/bin/env php), que é outra coisa: é uma instrução para o Linux, na primeira linha, e o PHP a pula.
Dentro de um texto, não é comentário
As marcas de comentário só valem no código. Dentro de aspas, // e # são caracteres comuns. Ainda bem: senão, nenhum endereço https:// funcionaria.
<?php echo "Site: https://www.php.net // não é comentário\n"; echo "# também não\n";
$ php string.php Site: https://www.php.net // não é comentário # também não
Comentários de várias linhas: /* … */
Para um texto mais longo, abra com /* e feche com */. Tudo o que estiver entre as duas marcas é ignorado, quantas linhas forem:
<?php /* Comentário de várias linhas: o leite acabou, mas o café ainda tem. */ echo "- leite\n"; $total = 10 /* preço */ * 2; echo "Total: $total\n";
$ php bloco.php - leite Total: 20
- /*
- Abre o comentário. Pode estar sozinho na linha ou junto do texto.
- */
- Fecha. Tudo entre
/*e*/some para o PHP. - 10 /* preço */ * 2
- Como o bloco tem começo e fim marcados, ele pode ficar até no meio de uma linha de código. O PHP lê
10 * 2. Funciona, mas atrapalha a leitura: use com moderação.
É comum ver blocos com um * no começo de cada linha, só por estética:
<?php /* * Lojinha da Ana * Versão 1, outubro de 2026 */
Os * do meio não têm função nenhuma: são parte do texto do comentário. Só o /* do começo e o */ do fim importam.
Comentários de documentação: /** … */ (PHPDoc)
Um bloco que começa com dois asteriscos, /**, é um comentário de documentação, no formato chamado PHPDoc. Para o PHP, ele continua sendo um comentário: não muda nada na execução. A diferença é que os editores de código e outras ferramentas sabem ler esse formato.
Ele é usado logo acima de algo que se quer documentar, como uma função (você vai aprender a criar funções no Nível 2; aqui basta saber que total calcula preço vezes quantidade):
<?php
/**
* Calcula o total de uma compra.
*
* @param float $preco Preço de uma unidade.
* @param int $qtd Quantidade comprada.
* @return float O preço vezes a quantidade.
*/
function total(float $preco, int $qtd): float
{
return $preco * $qtd;
}
echo total(12.5, 3), "\n";
$ php doc.php 37.5
- /**
- Abre um comentário de documentação (dois asteriscos).
- Calcula o total de uma compra.
- A primeira frase: um resumo do que vem abaixo.
- @param float $preco …
- Uma etiqueta (tag): começa com
@.@paramdescreve um parâmetro, a informação que a função recebe: o tipo, o nome e o que ele significa. - @return float …
- Descreve o que a função devolve.
- */
- Fecha, como num bloco comum.
Para que serve, se o PHP ignora? Quando você passa o mouse sobre total( em outra parte do código, editores como o VS Code e o PhpStorm mostram esse texto numa caixinha, com a descrição de cada parâmetro (veja Editores e IDEs). Ferramentas como o phpDocumentor transformam esses comentários num site de documentação. As etiquetas mais vistas:
| Etiqueta | Descreve |
|---|---|
@param tipo $nome descrição | Um parâmetro da função |
@return tipo descrição | O que a função devolve |
@throws ClasseDoErro | Um erro que a função pode lançar (veja Exceções) |
@var tipo | O tipo de uma variável ou propriedade |
@deprecated | "Não use mais; vai sair" |
@see, @link | "Veja também" outra função ou um endereço |
No PHP moderno, os tipos podem ficar no próprio código (o float $preco e o : float do exemplo; veja Tipos e Retorno), e o PHPDoc fica para as explicações. Enquanto você aprende, não precisa documentar tudo; basta reconhecer o formato quando encontrá-lo.
Missão: a Ana deixou uma linha de "depuração" que mostra o preço, e agora só quer ver o total. Não apague a linha: transforme-a em comentário, para poder ligá-la de novo depois. A saída deve ser só Total: 37.5.
<?php $preco = 12.5; $qtd = 3; echo "Depuração: preço = $preco\n"; echo "Total: ", $preco * $qtd, "\n";
<?php $preco = 12.5; $qtd = 3; // echo "Depuração: preço = $preco\n"; echo "Total: ", $preco * $qtd, "\n";
"Comentar" uma linha para desligá-la é um truque que você vai usar o tempo todo para encontrar defeitos (veja Depurar). Nos editores de código, o atalho Ctrl+/ coloca ou tira o // da linha onde está o cursor, ou de todas as linhas selecionadas.
Cuidado: #[…] não é comentário PHP 8.0+
Até o PHP 7, qualquer coisa começando com # era comentário. No PHP 8 surgiram os atributos, um recurso que "etiqueta" funções e classes, e eles são escritos justamente com #[ … ]. Resultado: uma "anotação" que começa com #[ deixou de ser comentário e virou código:
<?php #[TODO] colocar o preço echo "Olá!\n";
$ php attr.php Parse error: syntax error, unexpected identifier "colocar" in /home/ana/coment/attr.php on line 2
O PHP leu #[TODO] como um atributo chamado TODO e depois achou a palavra solta colocar, que não faz sentido ali. Com um espaço entre o # e o [, volta a ser comentário:
<?php # [TODO] colocar o preço echo "Olá!\n";
$ php attr2.php Olá!
E o pior caso é quando não dá erro. Se o #[…] estiver logo acima de uma função, ele é um atributo válido, e o PHP aceita calado:
<?php
#[TODO]
function saudar() {
echo "Olá!\n";
}
saudar();
$ php attr4.php Olá!
Aqui nada quebrou, mas o #[TODO] não é uma anotação para você: é código, que o PHP guardou como um atributo da função. Os atributos de verdade têm usos importantes, como o #[\Override] e o #[\Deprecated], e são assunto de Atributos.
Para comentar, use //. Se usar #, nunca o grude num [. E se você pegar um código antigo, do PHP 7, cheio de #[ usados como comentário, troque-os por //.
Missão: o programa abaixo não roda por causa da anotação da linha 2. Conserte sem apagar a anotação (o texto TODO deve continuar no código, como comentário).
<?php #[TODO] mostrar o preço com vírgula echo "Preço: R$ 12.5\n";
<?php // TODO: mostrar o preço com vírgula echo "Preço: R$ 12.5\n";
Mais duas armadilhas
O ?> fecha o PHP, mesmo dentro de //
A marca ?> encerra o trecho de PHP e volta ao "modo HTML" (veja PHP Dentro do HTML). Ela é tão forte que termina um comentário de uma linha:
<?php echo "Antes\n"; // o PHP termina com ?> e volta ao HTML echo "Depois\n";
$ php fecha.php Antes e volta ao HTML echo "Depois\n";
O comentário acabou no ?>. Dali em diante, o PHP estava fora do modo PHP: o resto da linha e o echo de baixo saíram como texto comum, e o "Depois" nunca foi executado. Num comentário de várias linhas (/* … */), o ?> não tem esse efeito. Se precisar escrever ?> num comentário, use um bloco /* */.
Um /* */ não cabe dentro de outro
O comentário de bloco termina no primeiro */ que aparecer. Por isso não dá para "aninhar" (colocar um dentro do outro). Isso pega quem tenta desligar um trecho que já tinha um comentário de bloco:
<?php /* echo "pão\n"; /* echo "leite\n"; */ echo "café\n"; */ echo "fim\n";
$ php aninhado.php Parse error: syntax error, unexpected token "*", expecting end of file in /home/ana/coment/aninhado.php on line 6
O primeiro */ (linha 4) fechou o comentário. A linha 5 virou código de novo, e o */ da linha 6 sobrou, sem par. Para desligar trechos grandes, prefira // em cada linha (o Ctrl+/ faz isso por você).
Comentários no PHP × comentários no HTML
Numa página web você pode usar dois tipos de comentário, e eles têm destinos diferentes:
<!DOCTYPE html> <html> <body> <!-- Comentário HTML: o visitante vê no código-fonte --> <?php // Comentário PHP: o visitante nunca vê $nome = "Ana"; /* Este também não sai do servidor */ echo "<p>Olá, $nome!</p>\n"; ?> </body> </html>
O que chega ao navegador (pelo servidor embutido):
$ curl -s localhost:8000/index.php <!DOCTYPE html> <html> <body> <!-- Comentário HTML: o visitante vê no código-fonte --> <p>Olá, Ana!</p> </body> </html>
O comentário HTML <!-- … --> está fora do PHP, então é texto comum e vai para o navegador. Ele não aparece na página, mas qualquer pessoa vê com "Exibir código-fonte". Os comentários PHP ficam no servidor. Por isso, nunca escreva senhas, nomes de servidores ou detalhes internos em comentários HTML.
O que escrever num comentário
Comentário bom explica o porquê; o quê, o próprio código já diz. Compare:
| Comentário | Avaliação |
|---|---|
$total = $preco * $qtd; // multiplica preço por quantidade | Inútil: repete o código. |
$frete = 0; // frete grátis: promoção de outubro, combinada com a transportadora | Bom: explica uma decisão que o código não mostra. |
// TODO: aceitar preço com vírgula ("12,50") | Bom: marca algo pendente. TODO ("a fazer") e FIXME ("conserte-me") são marcas que os editores destacam e listam. |
// $desconto = 10; (esquecido há meses) | Ruim: código comentado que ninguém sabe se ainda serve. Se não serve, apague; o histórico do Git guarda. |
Enquanto você aprende, porém, vale o contrário: comente à vontade, até o óbvio. Escrever em português o que cada linha faz é um ótimo jeito de estudar. Só não estranhe quando, em projetos profissionais, os comentários forem poucos e bem escolhidos.
Quando dá errado
#[ usado como comentário
$ php attr.php Parse error: syntax error, unexpected identifier "colocar" in /home/ana/coment/attr.php on line 2
O que aconteceu: no PHP 8, #[ começa um atributo, não um comentário.
Como consertar: troque por // (ou ponha um espaço: # [TODO]).
<?php echo "Olá\n"; /* comentário que nunca fecha echo "Tchau\n";
$ php naofechou.php Parse error: Unterminated comment starting line 3 in /home/ana/coment/naofechou.php on line 3
O que aconteceu: "comentário não terminado, começando na linha 3". Faltou o */. Como é um Parse error, nem o Olá da linha 2 aparece (veja Lendo Erros).
Como consertar: feche o bloco com */ onde o comentário termina.
$ php aninhado.php Parse error: syntax error, unexpected token "*", expecting end of file in /home/ana/coment/aninhado.php on line 6
O que aconteceu: o primeiro */ fechou o bloco; o segundo sobrou.
Como consertar: use // em cada linha para desligar trechos que já têm comentários.
$ php fecha.php Antes e volta ao HTML echo "Depois\n";
O que aconteceu: o comentário // tinha um ?>, que encerrou o modo PHP.
Como consertar: tire o ?> do comentário ou use /* … */.
Missão final: documente a função total com um comentário PHPDoc logo acima dela: uma frase dizendo o que ela faz, um @param para cada parâmetro ($preco e $qtd) e um @return. O resultado do programa não deve mudar.
<?php
function total(float $preco, int $qtd): float
{
return $preco * $qtd;
}
echo total(12.5, 3), "\n";
<?php
/**
* Calcula o total de uma compra.
*
* @param float $preco Preço de uma unidade.
* @param int $qtd Quantidade comprada.
* @return float O preço vezes a quantidade.
*/
function total(float $preco, int $qtd): float
{
return $preco * $qtd;
}
echo total(12.5, 3), "\n";
Referência
| Forma | Nome | Alcance | Uso |
|---|---|---|---|
// texto | Comentário de linha | Até o fim da linha (ou até um ?>) | O mais comum |
# texto | Comentário de linha (estilo shell) | Igual ao // | Raro hoje; nunca grudado em [ |
/* texto */ | Comentário de bloco | Do /* ao primeiro */ | Textos longos; não aninha |
/** texto */ | PHPDoc (documentação) | Igual ao bloco | Acima de funções, classes, propriedades |
#[Nome] | Atributo (não é comentário) PHP 8.0+ | — | Veja Atributos |
<!-- texto --> | Comentário HTML | Fora do PHP; vai para o navegador | Nunca com informações internas |
Exercícios
1. Comentário de uma linha
Complete com a marca de comentário mais usada no PHP moderno:
2. Fechar o bloco
Complete para fechar o comentário de bloco:
3. Documentação
Com que três caracteres começa um comentário PHPDoc?
4. Qual destas linhas dá erro no PHP 8?
5. O que echo "a"; // echo "b"; mostra?
6. Numa página PHP, qual comentário um visitante consegue ler com "Exibir código-fonte"?
7. Para que serve um comentário PHPDoc (/** */) com @param e @return?
Resumo
- Comentários são ignorados pelo PHP; servem para pessoas.
//e#: até o fim da linha. Prefira//./* … */: várias linhas, até o primeiro*/; não dá para colocar um dentro do outro./** … */(PHPDoc): documentação com etiquetas como@parame@return, lida por editores e ferramentas.- No PHP 8,
#[…]é um atributo, não comentário. - Um
?>dentro de//encerra o PHP. Dentro de aspas,//e#são texto comum. - Comentar uma linha (Ctrl+/) é o jeito de desligá-la sem apagar.
- Comentários HTML vão para o navegador; comentários PHP ficam no servidor.