# Aplicativos em PHP/Editores e IDEs para PHP, CSS, JavaScript e HTML/Eclipse com PHPEclipse, Aptana e outros plugins
## Introdução

O desenvolvimento de um aplicativo Web em PHP requer basicamente conhecimentos nas seguintes áreas: HTML, JavaScript, CSS, PHP e de um banco de dados. Com a IDE Eclipse podemos juntar alguns plugins e formar um ótimo ambiente de desenvolvimento.
Um recurso muito importante em uma ferramenta web é um bom debugger, pois com o que se perde muito tempo é com a caça aos bugs. O melhor debugger que testei foi o do PHPEclipse.
Agora comparemos o trabalho em um editor de texto comum e no editor do PHPEclipse. No editor de texto normalmente se cria um script até o final e então manda-se para o servidor para testar no browser.
No PHPEclipse a cada linha digitada temos uma ajuda do debugger (caso haja algum erro ele avisa e até corrige com uma solução de sugestão). Tem dúvida sobre alguma palavra-chave? Deixe o cursos de texto sobre a mesma e tecle Ctrl+Shift+H para receber uma página da documentação oficial do PHP, com sintaxe, exemplos, etc. Isso até no seu idioma nativo, como veremos adiante.
Auto-completa código HTML, JavaScript e PHP. Gerenciamento do banco de dados integrado (QuantumDB), Modelagem de dados (Azurry Clay) e muitas outras facilidades integradas.
Com a intenção de encontrar um ambiente de desenvolvimento que torne o trabalho com PHP mais produtivo, testei diversos editores e IDEs, inclusive alguns comerciais, como o ZendStudio e o Dreamweaver. O Eclipse, juntamente com o PHPEclipse, JSEclipse, o EclipseTidy e o QuantumDB formaram o ambiente de desenvolvimento mais produtivo, além de inteiramente free e open-source. Com ele se desenvolve tando o HTML, o JavaScript quanto o código PHP. A característica mais marcante ao meu ver, a mais produtiva para desenvolvimento em PHP é o debugger. Sei que existe a variante pessoal, o gosto de cada um, e algumas pessoas podem preferir esta ou aquela ferramenta, dependendo de sua bagagem anterior e de sua atitude, mas para mim esta foi a melhor alternativa para trabalho com o PHP.
O PHPEclipse é formado por um conjunto de plugins para o Framework Eclipse que traz uma IDE integrada para desenvolvimento de PHP (http://www.plog4u.org/index.php/Using_PHPEclipse ). Podemos utilizar o Eclipse com PHPEclipse tanto no Windows quanto no Linux, pois o mesmo é desenvolvido em Java para ambientes gráficos Desktop e roda em qualquer ambiente que suporte Java.
O Eclipse oferece um conjunto de recursos importantes para o desenvolvedor, como o CVS e Subversion, Webdav, busca texto em projetos e muitos plug-ins de terceiros, além de uma grande comunidade de usuários e desenvolvedores.

## Características do PHPEclipse

* PHP, HTML, XML and CSS Syntax Highlighting
* Code completion
* Javascript Editor (via JSEclipse)
* Integrated web browser preview (somente no Windows)
* Integrated control of Apache & MySQL servers (if using XAMP distribution)
* Some PHPUnit Integration (?)
* Integrated MySQL client view using Quantum DB (PostgreSQL e outros bancos)
* HTMLTidy integration
* Debug
* Marca início e final de chaves e parênteses, colchetes e chaves
(?) Ainda não foram testados
Integrado aos plugins JSEclipse e EclipseTidy oferece ainda mais recursos.
Características da IDE Eclipse+PHPEclipse+JSEclipse+EclipseTidy:
* Colorir sintaxe.
* Auto-completar código:
* PHP – (Ctrl+BarraDeEspaço)
* HTML (digitar parte e aguardar. Exemplo: digitar “<” e aguardar ou parte e Ctrl+Espaço. Ajuda com Tabelas, forms, etc.
* JavaScript (sililar ao HTML), exemplo: digitar “<script”, aguardar um pouco e teclar Ctrl+Espaço
* Tanto para HTML quanto para JavaScript ele completa com trechos de código. Se teclar <html e Ctrl+Espaço ele exibe todo o cabeçalho do HTML. Tecle “$” e aguarde, ou “$n”.
Obs.: é sensível ao contexto. Só auto-completará uma função php num script php.
* Ajuda Rápida ao selecionar palavra-chave e mover mouse sobre a mesma.
* Ajuda completa ao selecionar palavra-chave e teclar Ctrl+Shift+H ou botão direito e PHP Help)
* Debugar o código logo que teclamos Enter em novo script, ou seja, a cada linha. Ao abrir script existente. Sempre que existe erro e salvamos o arquivo, o nome do arquivo e o diretório onde ele encontra-se ficam com um pequeno X vermelho acusando o erro.
* Numeração de linhas (Window – Preferences – PHPEclipse... - PHP – Show Line Numbers)
* Controle de Tabulação (Window – Preferences – PHPEclipse... - PHP – Display tab width)
* No Windows ao abrir ou ao salvar mostra o resultado na janela PHP Browser (se corretamente configurado em Window – Preferences – PHPEclipse... – Project Defaults e WebServer local).

## Alterando o Help Online para Português do Brasil

(Tradução e resumo da Wikipedia sobre PHPEclipse)
* Fechar Eclipse
* Mover doc.zip do arquivo .../plugins/net.sourgeforge.phphelp_... para uma pasta temporária
* Descompactar doc.zip
* Baixar o arquivo doc do idioma desejado do site oficial do php, sendo do tipo “Many HTML files”
* Descompactar no diretório doc do doc.zip, socrescrevendo todos
* Compactar o diretório doc como doc.zip (embutindo também o diretório doc). No linux:
zip -r doc.zip doc. No Windows selecionar o diretório doc e compactar com WinRar ou outro.
* Copiar doc.zip novamente para .../plugins/net.sourceforge.net.phphelp
Utilizando: Selecione uma palavra-chave em um script PHP e tecle Ctrl+Shift+H ou clique com o botão direito do mouse e PHP Help.

## Instalações
### Instalação do Eclipse

- Baixar a versão 3.1.1 ou superior aqui: http://www.eclipse.org/downloads/index.php preferindo um mirror brasileiro ( veja abaixo na lista em South America). Requer Java (JRE ou JSDK).
- Descompacte o arquivo

### Instalação do PHPEclipse

- Baixar a versão 1.2.3 ou superior do site oficial: http://www.phpeclipse.com/
- Copie o arquivo .zip para o diretório do Eclipse. Então descompacte.

### Instalação do JavaScript Development Tools (JSDT)

Baixe também do site:
http://www.eclipse.org/webtools/jsdt/
Instale de maneira semelhante a instalação do PHPEclipse.

### Instalação do EclipseTidy

Download - http://eclipsetidy.sourceforge.net/ e instale da mesma forma dos anteriores.

### Instalação do Quantum DB

Características:
* connect to databases using standard JDBC drivers
* review schemas, tables, views and sequences
* look up column, index and foreign key information
* issue ad-hoc queries or other SQL statements against the database
* manage, edit, and work with SQL files (*.sql)
* issue updates, deletes, and inserts using simple, easy-to-use wizards
Trabalha com Adabas, DB2, DB2 on AS400, HSQLDB, Informix, MySQL, Oracle, Pointbase, PostgreSQL, Sybase e vários bancos com um driver JDBC.
Download - http://sourceforge.net/projects/quantum/
Também descompacte para o mesmo diretório do Eclipse.
Para adicionar um banco, instale o JDBC correspondente a ele.
Para o PostgreSQL baixe daqui:
http://jdbc.postgresql.org/download.html (Para a versão 7.4 baixar o apropriado pacote).
Para o MySQL:
http://dev.mysql.com/downloads/connector/j/
- Após descompactar abra o Eclipse e Window – Open Perpective – Other... Quantum DB e OK
- Na Perpectiva Database Bookmark (esquerda) clique com o botão direito e New Bookmark.
- Clique em Add Driver – Add External Jar... e indique o arquivo .jar que você baixou.
- Clique em Browse... e selecione o nome da classe e OK e Finish.
- Selecione o JDBC instalado e clique em Next.
- Userid – nomeuser e Password - ****** Hostname (127.0.0.1), Port (5432) Database name (banco).
- Clique em Next e digite um nome para esta conexão (sugestão: nome do banco) e clique em Next.
- Clique em Finish.
- Duplo clique no novo Bookmark que apareceu à esquerda para abrir (conectar) o banco.
- Ao selecionar e duplo clique em uma tabela, seu conteúdo é exibido abaixo e à esquerda.
- No painel de cima à esquerda podemos inserir consultas na sintaxe SQL.
Veja a tela abaixo para detalhes.

### Configuração do PHPEclipse no Eclipse

Abrir o Eclipse – menu Window – Preferences
Observe que já temos JSEclipse e PHPEclipse Web Developn.
- Clique no sinal de + à esquerda de PHPEclipse
- Em Browser Configuration podemos adicionar outros navegadores ou alterar o atual. - Em PHP uma boa opção é marcar “Show line number” que exibirá os números de linha no editor. - Agora clique em PHP External Tools
Uma configuração no WindowsXP.
- Agora vejamos Project Defaults
Veja que as configurações aqui são para um servidor web rodando localmente.
- Adicionando o Help do PHP ao Eclipse (clique no sinal de + em PHP)
Indique o caminho (local) do arquivo de help do PHP no formado .chn.
A saída mais eficiente (pelos meus testes) é a de criar um novo doc.zip (como indicado).
Configurando a Atualização Automática do Eclipse
- Window – Preferences – Install/Update
Adicionar o servidor e a porta do Proxy.
Clicar em Automatic Updates e Clicar em Automacically find new updates and notify me.

### Atualizando o Eclipse e seus plugins

- Help – Software Updates – Find and Install...
- Search for updates of the currently installed features
(Para atualizar o Eclipse atual e os Plugins instalados)
Selecionar um mirror e atualizar.
- Search for new features to install
(Procurar novos plugins para instalar)
Exemplo: Next – New Remote Site
Name - AnyEdit tools
URL - http://andrei.gmxhome.de/eclipse/

### Criando um Novo Projeto e PHP

- File – New – Project
- PHP – Sinal de + e PHP Project e Next
- Digite um nome para o projeto e clique em Finish.
Obs.: Antes de finalizar podemos desmarcar “Use default” e salvar o projeto noutra pasta.
- Clicar sobre o nome do Projeto no painel (Navigator) da esquerda com o botão direito e New – PHP File
- Em File name informe o nome do arquivo e clique em Finish.
Recebemos então o seguinte código:
<?php
Abrir uma linha em branco acima de ?> e digitar:
echo "Teste!";
Teclar Ctrl+S para salvar e observe que abaixo no painel PHP Browser já aparece o resultado: Teste! Este recurso até o momento está disponível apenas em Windows.
Caso queira maximizar o painel PHP Browser para ver o resultado em tela cheia:
- Clique no botão maximize à direita:

### Adicionando arquivos PHP ao Projeto criado

- Clique sobre o nome do projeto com o botão direito e New – PHP File.
- Em File name digite um nome para o arquivo e Finish.

### Adicionando arquivos HTML e JavaScript

- Clique sobre o nome do projeto com o botão direito e New – Other – Sinal de + de PHP e HTML file.
- Em File name digite um nome para o arquivo e Finish.

### Auto_completando o código

Logo abaixo da linha do echo digite "pg_" e então tecle Ctrl+BarraDeEspaços.
Veja o que aparece:
Uma relação de funções do PHP iniciadas com pg_ . A função selecionada tem uma pequena descrição aparecendo à direita.
Podemos também inserir outros arquivos no nosso projeto PHP: HTML, JS e outros formatos que também contarão com bons recursos do plugin PHPEclipse e do JSEclipse.

### Debugando Scripts PHP

Procurar e corrigir erros em códigos é algo muitas vezes trabalhoso e outras vezes mais ainda. Para lidar melhor com estes problemas e resolvê-los mais rápido e eficientemente, devemos: ter um bom conhecimento dos mecanismos de correção da ferramenta em uso, da sintaxe das funções e estruturas do PHP, além de usar as melhores ferramentas de programação disponíveis: IDEs, editores, funções/classes, livros tradicionais, livros eletrônicos, o manual oficial do PHP em português do Brasil, aplicativos de exemplo e o que sobrar pesquisar no site oficial do PHP e na Internet em geral.
Algumas vezes o Interpretador acusa erro em uma linha e o erro de fato encontra-se em outra bem diferente (normalmente acima), como é o caso de strings não fechadas adequadamente e concletes, chaves ou parêntesis.
Maior atenção para os pontos:

#### (ponto e vírgula) ao final das instruções

aspas (") fechando com apóstrofos (') ao invés de aspas
),} ou ] apenas abrindo ou fechando expressões em if com um igual (=) quando o correto são dois iguais (= =)
muita atenção com expressões lógicas
echos ou prints exibindo variáveis em pontos estratégicos. Exemplo: print "Valor $mValor " para debugar;
Exemplo de uso do Debug do PHPEclipse
Crie um arquivo com o código abaixo:
//include "conexao.inc.php";
//echo "Aguarde...;
for ($campo=20;$campo<9020;$campo++){ $str="insert into clientes values ($campo, 'Ribamar.$campo','ribafs.$campo@gmail.com','Fortaleza.$campo', 'Ceará.$campo',$campo*2)"; pg_query($conexao,$str);
//echo " Concluido!";
$x=4;
if (($x ==0) && ($x>5){
echo "Furado!";
}else{
echo "Ok";
Copie o arquivo para o diretório web como está. Então execute no browser.
Veja que ele retornará o seguinte erro:
Parse error: syntax error, unexpected '{' in C:\Arquivos de programas\xampp151\HTDOCS\teste.php on line 13
Não dá para identificar diretamente pela mensagem de erro, já que a { está correta.
Agora abra o Eclipse e num novo arquivo de projeto PHP cole o mesmo código acima.
Então tecle Ctrl+S para salvar. Veja que ao salvar ele grifa as duas chaves do if e adiciona dois pequenos círculos vermelhos à esquerda das linhas de número 13 e 15.
Pare o ponteiro do mouse sobre o círculo da linha 13. Receberá uma mensagem assim:
Parser error “’)’ expected after ‘if’ condition. “
Esta mensagem já nos ajuda mais que a retornada pelo browser, pois acusa de fato o problema, falta fechar o último parêntesis do if.

### Configuração do PHP e Apache para melhor Debug

Isso na fase de desenvolvimento, pois na fase de produção o ideal é inibir as mensagens de erro.
Editar o arquivo php.ini e configurar:
display_errors = On
log_erros = On
error_reporting = E_ALL & ~E_NOTICE (Ativa todos, exceto os Notice)
Salvar, parar o Apache e iniciar.

### Tipos de Erros e avisos do PHP

Parse error – problema com a sintaxe do script. O interpretador pára de rodar quando encontra um erro destes.
Fatal error – Um sério problema com o conteúdo do seu programa, como a chamada a uma função que ainda não foi definida. O interpretador pára ao encontrar um erro destes.
Warning – Aviso do interpretador que tem algo errado em seu programa. Exemplo: chamar função com número errado de argumentos. Mas este erro não impede de que o interpretador continue trabalhando.
Notice – Uma dica do interpretador. Exemplo: mostrar uma variável sem primeiro inicializar ela com algum valor. Não fará o interpretador parar.

## Using PHPEclipse : Installation : Installing the DBG Debugger

http://www.plog4u.org/index.php/Using_PHPEclipse_:_Installation_:_Installing_the_DBG_Debugger