PHP Editores e IDEs
Um programa PHP é um arquivo de texto comum. Dá para escrevê-lo até no Bloco de Notas, mas um editor de código ajuda muito: pinta cada parte do código com uma cor, avisa do erro antes de você rodar, completa nomes de funções e arruma o alinhamento. Nesta aula você vai conhecer as opções mais usadas, configurar o VS Code para PHP e aprender os cuidados com o arquivo (codificação, fim de linha) que evitam erros misteriosos.
- A diferença entre editor de texto, editor de código e IDE.
- Configurar o VS Code para PHP com a extensão PHP Intelephense.
- O que oferecem o PhpStorm, o Sublime Text e outros.
- Dizer ao editor onde está o executável do PHP e qual a versão.
- Formatar o código automaticamente.
- Salvar em UTF-8 sem BOM, e o erro que o BOM provoca.
- Conferir a sintaxe com
php -l.
A ideia: caneta, caderno e estojo completo
Dá para escrever uma redação numa folha solta com qualquer caneta (o editor de texto simples, como o Bloco de Notas). Um caderno com pauta e margem ajuda a manter tudo alinhado (o editor de código). E um estojo completo, com régua, corretivo e marca-texto, faz quase tudo por você (a IDE, de Integrated Development Environment, "ambiente de desenvolvimento integrado").
| Tipo | Exemplos | O que faz |
|---|---|---|
| Editor de texto | Bloco de Notas, TextEdit, gedit | Só edita texto. Sem cores, sem avisos. |
| Editor de código | VS Code, Sublime Text, Zed, Vim, Notepad++ | Cores, números de linha, abas, terminal; com extensões, avisos de erro e preenchimento automático. |
| IDE | PhpStorm, NetBeans | Tudo isso e mais: entende o projeto inteiro, refatora (renomeia uma função em todos os arquivos), depura, roda testes, conversa com o banco de dados. |
Para quem está começando, um editor de código bem configurado é o ideal: é leve, gratuito e mostra o que importa. O guia usa o VS Code como exemplo, mas qualquer um serve.
Os editores mudam a aparência a cada atualização, então esta aula descreve os menus e as configurações pelo nome, em vez de mostrar imagens. Os nomes dos menus estão na versão em português, quando ela existe; se o seu editor estiver em inglês, a tabela de atalhos no fim da aula ajuda.
VS Code + PHP Intelephense
O Visual Studio Code (ou VS Code) é um editor gratuito da Microsoft, para Windows, macOS e Linux, e o mais usado hoje. Sozinho, ele já pinta o código PHP e confere a sintaxe; com a extensão certa, ele passa a "entender" o PHP.
- Instale o VS Code. Baixe em code.visualstudio.com. No Linux, há pacotes
.debe.rpmno mesmo site (e o Snap:sudo snap install code --classic). - Abra a pasta do projeto, não um arquivo solto: menu Arquivo → Abrir Pasta… e escolha a pasta
site. Assim o editor enxerga todos os arquivos e o terminal já começa nessa pasta. - Instale a extensão PHP Intelephense. Clique no ícone de Extensões na barra lateral (ou Ctrl+Shift+X), pesquise
intelephensee instale a PHP Intelephense, de Ben Mewburn (o identificador ébmewburn.vscode-intelephense-client). - Desative o suporte embutido, como a própria documentação da Intelephense recomenda, para não ter sugestões repetidas: em Extensões, pesquise
@builtin php, abra PHP Language Features e clique em Desabilitar. (Deixe ligada a PHP Language Basics, que cuida das cores.)
O que a Intelephense faz
| Recurso | Como aparece |
|---|---|
| Erros de sintaxe na hora | Um sublinhado vermelho ondulado onde falta um ; ou sobra uma aspa, antes de você rodar. Passe o mouse para ler a mensagem. |
| Preenchimento automático | Ao digitar str_, aparece a lista str_contains, str_replace…; Enter completa. |
| Ajuda das funções | Ao abrir os parênteses, mostra quais valores a função espera, em que ordem e de que tipo. |
| Ir para a definição | F12 (ou Ctrl+clique) sobre o nome de uma função leva até onde ela foi criada. |
| Avisos de nomes desconhecidos | Sublinha uma função que não existe, como strlenn. |
| Formatação | Arruma espaços e recuos (veja Formatar o código). |
A versão gratuita faz tudo isso; uma licença paga ("Premium") acrescenta recursos como renomear em todo o projeto. Para o guia, a gratuita basta.
Configurando: a versão e o executável do PHP
As configurações do VS Code ficam num arquivo settings.json. Para abri-lo: Ctrl+Shift+P (a "paleta de comandos"), digite settings json e escolha Preferências: Abrir Configurações do Usuário (JSON). Acrescente, entre as chaves que já existem:
{
"intelephense.environment.phpVersion": "8.5.0",
"php.validate.executablePath": "/usr/bin/php",
"[php]": {
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client",
"editor.formatOnSave": true,
"editor.tabSize": 4,
"editor.insertSpaces": true
},
"files.encoding": "utf8",
"files.eol": "\n"
}
- intelephense.environment.phpVersion
- Para qual versão do PHP você escreve. Com
"8.5.0", a extensão aceita recursos novos como o|>e avisa quando você usa algo que não existe nessa versão. Se o seu servidor tem o 8.4, ponha"8.4.0". - php.validate.executablePath
- Onde está o programa
php. O VS Code usa esse PHP de verdade para conferir a sintaxe ao salvar. Descubra o caminho comwhich php(Linux e macOS) ouwhere.exe php(Windows). No Windows, as barras são dobradas:"C:\\php\\php.exe". - "[php]": { … }
- Ajustes que valem só para arquivos PHP: usar a Intelephense para formatar, formatar ao salvar, recuo de 4 espaços.
- files.encoding / files.eol
- Salvar em UTF-8 e com o fim de linha do Linux (
\n). Explicado em Os cuidados com o arquivo.
Para descobrir o caminho do PHP, pergunte ao terminal. No laboratório do guia:
$ which php /opt/php/bin/php « no laboratório; num Ubuntu com apt, /usr/bin/php
O terminal dentro do editor
O VS Code tem um terminal embutido: menu Terminal → Novo Terminal (ou Ctrl+'). Ele abre já na pasta do projeto. O fluxo de trabalho do guia fica assim: o código em cima, o terminal embaixo; você salva (Ctrl+S) e roda php ola.php. Para páginas web, abra um segundo terminal (o ícone + do painel), ligue o php -S localhost:8000 nele (aula O Servidor Embutido) e use o navegador.
Outras opções
PhpStorm
A IDE da JetBrains feita só para PHP, muito usada por profissionais. Entende o projeto inteiro sem configurar nada: refatoração segura, depurador integrado, testes, Composer, banco de dados, Git. É paga (assinatura), com período de teste e licença gratuita para estudantes e professores (programa educacional da JetBrains). Download em jetbrains.com/phpstorm.
Para configurar o PHP: Settings → PHP, escolha o PHP language level (8.5) e, em CLI Interpreter, clique em … e aponte para o executável do php. A formatação é Ctrl+Alt+L, já no padrão PSR-12 (o padrão de estilo da comunidade; veja Padrões PSR).
Sublime Text
Um editor rápido e leve, de sublimetext.com. Pode ser avaliado de graça por tempo indeterminado (de vez em quando aparece um lembrete para comprar). Para ter os recursos da Intelephense, instale o Package Control (menu Tools → Install Package Control) e, depois, os pacotes LSP e LSP-intelephense.
E os outros
| Editor | Observação |
|---|---|
| Zed | Editor novo e rápido (macOS, Linux, Windows); tem extensão de PHP que usa a Intelephense. |
| Vim e Neovim | Editores de terminal, presentes em todo servidor Linux. Com um plugin de LSP, usam a mesma Intelephense. |
| Notepad++ | Editor simples e gratuito para Windows; pinta o PHP, mas não avisa erros. |
| NetBeans | IDE gratuita da Apache, com suporte a PHP; mais pesada. |
| Kate, gedit, TextEdit, Bloco de Notas | Servem para um arquivo rápido. No TextEdit (Mac), use Formatar → Converter em Texto Simples, senão ele salva em formato de documento. |
Qual escolher?
| Situação | Sugestão |
|---|---|
| Está começando, quer algo gratuito | VS Code + PHP Intelephense |
| Computador fraco | Sublime Text, Zed ou Vim |
| Vai trabalhar com PHP profissionalmente, em projetos grandes | PhpStorm (vale testar no período gratuito) |
| Edita arquivos direto num servidor, pelo SSH | Vim ou nano |
Formatar o código
O PHP não liga para espaços e recuos: um programa todo numa linha só funciona igual. Mas pessoas leem código, e código bagunçado esconde erros. Formatar é arrumar espaços, recuos e quebras de linha num padrão. Compare:
<?php
$nota=7.5;
if($nota>=7){
echo "Aprovada\n";
}else{echo "Recuperação\n";}
<?php
$nota = 7.5;
if ($nota >= 7) {
echo "Aprovada\n";
} else {
echo "Recuperação\n";
}
Os dois fazem a mesma coisa. No segundo, dá para ver de relance o que está dentro do if e o que está dentro do else, graças ao recuo de 4 espaços. Como formatar:
| Editor | Formatar o arquivo |
|---|---|
| VS Code | Shift+Alt+F (Windows e Linux) ou Shift+Option+F (Mac); ou automático ao salvar, com editor.formatOnSave |
| PhpStorm | Ctrl+Alt+L (Mac: Cmd+Option+L) |
| Qualquer editor, pelo terminal | Ferramentas como o PHP CS Fixer e o PHP_CodeSniffer, instaladas com o Composer (aula Composer) |
Experimente: o código abaixo está bagunçado, mas funciona. Rode, arrume os espaços e o recuo à mão (o editor do guia não formata sozinho) e rode de novo: a saída não muda.
<?php
$nota=7.5;
if($nota>=7){
echo "Aprovada\n";
}else{echo "Recuperação\n";}
Os cuidados com o arquivo
Extensão .php
Salve sempre com a extensão .php. No Windows, ative a exibição de extensões no Explorador (menu Exibir → Mostrar → Extensões de nomes de arquivos), senão um ola.php.txt parece ola.php.
Codificação: UTF-8 sem BOM
O computador guarda letras como números, e a codificação é a tabela que diz qual número é qual letra. O padrão da web é o UTF-8, que tem todos os acentos. O VS Code mostra a codificação no canto inferior direito da janela (UTF-8); clicando ali, dá para trocar.
Alguns editores (principalmente no Windows) gravam no começo do arquivo três bytes invisíveis chamados BOM (Byte Order Mark, "marca de ordem dos bytes"). Para o PHP, esses bytes estão antes do <?php, ou seja, são HTML comum, e são enviados ao navegador logo de cara. Isso quebra tudo o que precisa acontecer antes da primeira saída, como mudar cabeçalhos, iniciar sessões e redirecionar. Veja um arquivo com BOM:
<?php
header("Content-Type: text/plain; charset=utf-8");
echo "Olá!\n";
$ file bom.php bom.php: PHP script, Unicode text, UTF-8 (with BOM) text « o comando file denuncia o BOM $ curl -i localhost:8000/bom.php HTTP/1.1 200 OK Host: localhost:8000 Date: Sat, 17 Oct 2026 00:05:11 GMT Connection: close X-Powered-By: PHP/8.5.8 Content-type: text/html; charset=UTF-8 « o header() não funcionou: continua text/html <br /> <b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/ana/bom/bom.php:1) in <b>/home/ana/bom/bom.php</b> on line <b>2</b><br /> Olá!
"Não é possível modificar a informação de cabeçalho: os cabeçalhos já foram enviados (a saída começou em bom.php:1)". A linha 1 parece começar com <?php, mas os três bytes invisíveis vieram antes (eles estão grudados no começo da linha do <br />, só que não aparecem). A aula header e Redirecionamento explica os cabeçalhos.
Como evitar: salve em "UTF-8" (no VS Code, é o padrão), e nunca em "UTF-8 com BOM". Para consertar um arquivo, no VS Code clique na codificação no canto inferior direito → Salvar com Codificação → UTF-8.
Fim de linha: LF ou CRLF
O Linux e o macOS terminam cada linha com um caractere (LF, o \n); o Windows, tradicionalmente, com dois (CRLF, \r\n). O PHP aceita os dois no código, mas scripts que rodam em servidores Linux (como os com #!/usr/bin/env php no começo, aula PHP na Linha de Comando) falham com CRLF. O VS Code mostra LF ou CRLF no canto inferior direito; prefira LF.
Conferindo a sintaxe sem rodar: php -l
O que o editor faz quando sublinha um erro é parecido com isto: o PHP tem uma opção -l (de lint, o nome que programadores dão a "procurar defeitos") que lê o arquivo e confere a sintaxe sem executar nada. É útil antes de enviar um arquivo para o servidor, ou num editor sem extensão de PHP.
$ php -l e.php No syntax errors detected in e.php « "nenhum erro de sintaxe encontrado" $ echo $? 0 $ php -l a.php Parse error: syntax error, unexpected token "echo", expecting "," or ";" in a.php on line 3 Errors parsing a.php « "erros ao analisar a.php" $ echo $? 255
O a.php tem um ; faltando no fim da linha 2. O PHP só percebe na linha 3, quando encontra o echo seguinte sem que a instrução anterior tivesse terminado: por isso a mensagem fala em "echo inesperado" e aponta a linha 3. É o mesmo erro que o editor sublinharia em vermelho. A aula Lendo Erros do PHP desmonta essa mensagem.
-l não pega todo erro
Ele confere só a sintaxe (a "gramática"). Uma função com o nome errado (strlenn("Ana")) ou uma variável inexistente passam no php -l e só dão erro quando o programa roda. Editores com Intelephense avisam alguns desses casos; testes automáticos (aula Testes com PHPUnit) pegam o resto.
Quando dá errado
O que aconteceu: o VS Code tentou conferir a sintaxe com o PHP de verdade e não o encontrou: o PHP não está instalado ou não está no PATH.
Como resolver: instale o PHP (Linux, Windows e macOS) e/ou preencha php.validate.executablePath com o caminho completo do executável. Reinicie o VS Code.
|> ou array_first como erro, mas o código roda
O que aconteceu: a extensão acha que você usa uma versão mais antiga do PHP e não conhece os recursos do 8.5.
Como resolver: ajuste "intelephense.environment.phpVersion": "8.5.0" e atualize a extensão.
O que aconteceu: duas extensões de PHP estão ativas ao mesmo tempo (por exemplo, a embutida PHP Language Features e a Intelephense, ou duas extensões de "PHP IntelliSense").
Como resolver: deixe só a Intelephense: desabilite a embutida (@builtin php) e desinstale as outras.
é ou �
O que aconteceu: o arquivo foi salvo numa codificação antiga (como "Windows 1252" ou "ISO 8859-1") e lido como UTF-8, ou o contrário.
Como resolver: no VS Code, clique na codificação no canto inferior direito → Reabrir com Codificação (escolha a antiga, para ver o texto certo) e depois Salvar com Codificação → UTF-8. A aula Acentos e mbstring fala mais sobre acentos.
O que aconteceu: o arquivo não foi salvo (no VS Code, a aba mostra um círculo branco no lugar do ×), ou você está editando outro arquivo com o mesmo nome em outra pasta.
Como resolver: Ctrl+S (ou ative Arquivo → Salvamento Automático). Confira o caminho do arquivo passando o mouse sobre a aba.
Referência: atalhos do VS Code
| Ação | Windows e Linux | macOS |
|---|---|---|
| Salvar | Ctrl+S | Cmd+S |
| Paleta de comandos (Command Palette) | Ctrl+Shift+P | Cmd+Shift+P |
| Abrir arquivo da pasta pelo nome | Ctrl+P | Cmd+P |
| Terminal integrado | Ctrl+' | Ctrl+' |
| Formatar documento (Format Document) | Shift+Alt+F | Shift+Option+F |
| Comentar/descomentar linha | Ctrl+/ | Cmd+/ |
| Ir para a definição | F12 | F12 |
| Extensões | Ctrl+Shift+X | Cmd+Shift+X |
| Ver os problemas encontrados (Problems) | Ctrl+Shift+M | Cmd+Shift+M |
Para fechar, faça o trabalho de um editor: encontre os erros. Este programa tem dois erros de sintaxe, o tipo de coisa que a Intelephense sublinharia em vermelho. Rode, leia a mensagem (ela mostra um erro de cada vez), conserte e rode de novo até funcionar.
Missão: conserte os dois erros (uma aspa e um ponto e vírgula faltando) para a saída mostrar a lista de compras completa, sem nenhuma mensagem de erro.
<?php echo "Lista de compras:\n"; echo "- pão\n" echo "- leite\n"; echo "- café\n;
<?php echo "Lista de compras:\n"; echo "- pão\n"; echo "- leite\n"; echo "- café\n";
Exercícios
1. Qual extensão do VS Code esta aula recomenda para PHP?
2. Um arquivo dá Cannot modify header information - headers already sent by (output started at …:1), mas a linha 1 é só <?php. Qual a causa mais provável?
3. Conferir a sintaxe
Complete o comando que confere a sintaxe do arquivo loja.php sem executá-lo:
4. A versão para a Intelephense
Complete a configuração para a extensão entender o PHP 8.5:
Resumo
- Editor de código (VS Code, Sublime, Zed, Vim) para começar; IDE (PhpStorm) para projetos grandes.
- VS Code: instale a PHP Intelephense, desabilite a PHP Language Features embutida e configure
intelephense.environment.phpVersion="8.5.0"ephp.validate.executablePath(descubra comwhich php/where.exe php). - Abra a pasta do projeto e use o terminal integrado para
php arquivo.phpephp -S. - Formate com Shift+Alt+F ou ao salvar; recuo de 4 espaços (PSR-12).
- Salve em UTF-8 sem BOM e com fim de linha LF. O BOM causa "headers already sent … output started at …:1".
php -l arquivo.phpconfere a sintaxe sem executar.- Próximo passo: O Editor do Guia.