segunda-feira, 10 de março de 2014

Utilizando o CakePHP no Eclipse

Introdução

Sempre utilizei o Gedit ou o Geany (quando estou no Windows) para para criar e editar meus arquivos do CakePHP, bem... às vezes começo meus os arquivos com o bake (disponível no CakePHP via terminal) que gera a estrutura básica, e até pouco tempo não pensava em trabalhar de outra forma.
Mas depois de usar o Eclipse num curso de Java da Universidade XTI fiquei com vontade de experimentcom PHP, mas especificamente com o CakePHP.
O sistema e aplicativos usados neste tutorial são os seguintes:

  • Ubuntu 12.04 (32 bits)
  • Apache 2.0
  • PHP 5.3.10
  • java 1.7.0_51
  • PostgreSQL 9.1.12
  • CakePHP 2.4.6
  • Eclipse Standard 4.3.2
   

Instalando o CakePHP e configurando um app básico 

Para começar, vamos baixar o cakePHP daqui https://github.com/cakephp/cakephp/tags, descompactar e copiar o diretório para a raiz do servidor e dar permissões de escrita para o diretório app/tmp. Neste teste o diretório do cake foi renomeado para cakephp-test, ao carregar a página temos uma tela como a abaixo:
  
Meste ponto o cakePHP está funcionando, mas dá para melhorar algumas coisas antes de continuar. Para começar, vamos criar um banco de dados "cakephp_test", usando o phppgadmin.

Agora, através do bake podemos arrumar as pendências da tela acima:

A opção [P]roject faz os ajustes necessários no app/Config/core.php
Com a opção [D]atabase Configuration configuramos o banco de dados

Vejam que agora ficou bem melhor, só ficou faltando ativar o DebugKit, mas não faz diferença neste teste.

Instalando o Eclipse e o Plugin PDT

O Eclipse Standard 4.3.2 (Kleper) pode ser baixado em https://www.eclipse.org/downloads/, a instalação é simples, basta descompactar o arquivo baixado.

A instalação do Plugin PDT para gerenciar projetos PHP também não é complexa, já que o plugin está disponível no próprio repositório do Kleper.
Depois é só clicar em Next, concordar com os termos de serviço e, após instalação do plugin, reiniciar o Eclipse.

Para testar os recursos do PDT, podemos criar um projeto no Eclipse utilizando diretório onde instalamos o CakePHP.



 E aí está...
 O PDT já está trabalhando a nosso favor, métodos do controller estão sendo reconhecidos e a função autocompletar do Eclipse funcionando.

Podemos também experimentar a geração automática de documentação. É só começar digitar /** e clicar em Enter. 

Completando os reconhecimento do CakePHP

Mais duas coisas ainda precisam ser feitas para valer a pena o uso do Cake no Eclipse:

Fazer com que o Eclipse reconheça os arquivos .ctp como código PHP



Adicionar os arquivos *.ctp aos tipos de conteúdo PHP é o suficiente. Vejam o arquivo Layouts/default.ctp

2º Fazer com que o Eclipse reconheça os helpers do CakePHP nas views. Vejam que nada acontece se começarmos escrever um link ($this->Html->link) no cabeçalho da página default.ctp.
A solução neste caso é criar um arquivo que mapeie o Helpers usados no nosso projeto, dentro do diretório app/View. Encontrei o código abaixo no bakery que funcionou de primeira.
Arquivo: app/View/helper_complete.php

<?php
App::uses('AppHelper''Helper'); /** 
 * this Helper
 *
 * @property Html $Html
 * @property Session $Session
 * @property Form $Form
 */
class this extends AppHelper {
    var 
$Html;
    var 
$Session;
    var 
$Form;
    
    public function 
__contruct()
    {
        
$this->Html = new HtmlHelper($View);
        
$this->Session = new SessionHelper($View);        
        
$this->Form = new FormHelper($View);        
    }
}
$this = new this(); ?>

Conforme nosso projeto cresça e passemos a utilizar outros Helpers, é só ir atualizando este arquivo.

Bom, é isto. Podemos até usar o navegador do Eclipse para ver o código rodando.