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.

Você vai aprender
  • 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").

TipoExemplosO que faz
Editor de textoBloco de Notas, TextEdit, geditSó edita texto. Sem cores, sem avisos.
Editor de códigoVS Code, Sublime Text, Zed, Vim, Notepad++Cores, números de linha, abas, terminal; com extensões, avisos de erro e preenchimento automático.
IDEPhpStorm, NetBeansTudo 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.

Sem capturas de tela

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.

  1. Instale o VS Code. Baixe em code.visualstudio.com. No Linux, há pacotes .deb e .rpm no mesmo site (e o Snap: sudo snap install code --classic).
  2. 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.
  3. Instale a extensão PHP Intelephense. Clique no ícone de Extensões na barra lateral (ou Ctrl+Shift+X), pesquise intelephense e instale a PHP Intelephense, de Ben Mewburn (o identificador é bmewburn.vscode-intelephense-client).
  4. 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

RecursoComo aparece
Erros de sintaxe na horaUm sublinhado vermelho ondulado onde falta um ; ou sobra uma aspa, antes de você rodar. Passe o mouse para ler a mensagem.
Preenchimento automáticoAo digitar str_, aparece a lista str_contains, str_replace…; Enter completa.
Ajuda das funçõesAo abrir os parênteses, mostra quais valores a função espera, em que ordem e de que tipo.
Ir para a definiçãoF12 (ou Ctrl+clique) sobre o nome de uma função leva até onde ela foi criada.
Avisos de nomes desconhecidosSublinha uma função que não existe, como strlenn.
FormataçãoArruma 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 com which php (Linux e macOS) ou where.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

EditorObservação
ZedEditor novo e rápido (macOS, Linux, Windows); tem extensão de PHP que usa a Intelephense.
Vim e NeovimEditores 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.
NetBeansIDE gratuita da Apache, com suporte a PHP; mais pesada.
Kate, gedit, TextEdit, Bloco de NotasServem 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çãoSugestão
Está começando, quer algo gratuitoVS Code + PHP Intelephense
Computador fracoSublime Text, Zed ou Vim
Vai trabalhar com PHP profissionalmente, em projetos grandesPhpStorm (vale testar no período gratuito)
Edita arquivos direto num servidor, pelo SSHVim 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:

EditorFormatar o arquivo
VS CodeShift+Alt+F (Windows e Linux) ou Shift+Option+F (Mac); ou automático ao salvar, com editor.formatOnSave
PhpStormCtrl+Alt+L (Mac: Cmd+Option+L)
Qualquer editor, pelo terminalFerramentas 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.

O -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

VS Code: "Cannot validate since a PHP installation could not be found"

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.

O editor sublinha |> 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.

Sugestões repetidas ou dois avisos para o mesmo erro

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.

Acentos aparecem como é 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.

"Mudei o código e nada mudou"

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çãoWindows e LinuxmacOS
SalvarCtrl+SCmd+S
Paleta de comandos (Command Palette)Ctrl+Shift+PCmd+Shift+P
Abrir arquivo da pasta pelo nomeCtrl+PCmd+P
Terminal integradoCtrl+'Ctrl+'
Formatar documento (Format Document)Shift+Alt+FShift+Option+F
Comentar/descomentar linhaCtrl+/Cmd+/
Ir para a definiçãoF12F12
ExtensõesCtrl+Shift+XCmd+Shift+X
Ver os problemas encontrados (Problems)Ctrl+Shift+MCmd+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:

php

4. A versão para a Intelephense

Complete a configuração para a extensão entender o PHP 8.5:

"intelephense.environment.phpVersion": ""

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" e php.validate.executablePath (descubra com which php / where.exe php).
  • Abra a pasta do projeto e use o terminal integrado para php arquivo.php e php -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.php confere a sintaxe sem executar.
  • Próximo passo: O Editor do Guia.