KISS - Keep it simple, stupid!

Configurando CakePHP no Komodo IDE

postado por João José Pedrini em 27/08/2008 00:47:51

Eu sou usuário do Komodo IDE, um editor baseado na plataforma do Mozilla. Como recentemente tenho trabalhado bastante com CakePHP, acabei criando um ambiente de desenvolvimento bem legal e vou compartilhar com vocês (não reinventei a roda, mas vou dar mais algumas dicas).

Umas das principais funções de uma IDE é o auto-complete, sem isto é preferível utilizar um editor qualquer. Para fazer com que o Komodo identifique as classes de Cake você deverá informar para a IDE aonde se encontram os arquivos do framework. Portanto, vá até Edit -> Preferences -> Languages -> PHP. Adicione o diretório raiz do core do CakePHP (local onde se encontram todas as classes do framework) e dê “Ok”. É interessante também você colocar o diretório do /vendors, caso exista alguma biblioteca externa no seu projeto.

Tela de Configuração dos diretórios

Tela de Configuração dos diretórios

Mas isto ainda não resolve tudo. Infelizmente, por ser um framework totalmente dinâmico, é impossível para a IDE identificar quais são os Helpers, Components e variáveis setadas pelo Controller. Ainda não inventaram nada que identifique as propriedades da classe para carregar a interface do objeto. Para falar a verdade, acredito que nunca irão inventar. Mas então, como fazemos?

Para os Components e Behaviors , podemos criar uma função privada (ou colocar underscore no início) instanciando todos os objetos que queira ter o auxilio, um exemplo de um Controller:

<?php
    function __completeComponents(){
        $this->Acl = new AclComponent();
        $this->Auth = new AuthComponent();
        $this->Cookie = new CookieComponent();
        $this->Email = new EmailComponent();
        $this->RequestHandler = new RequestHandlerComponent();
        $this->Security = new SecurityComponent();
        $this->Session = new SessionComponent();
    }
?>

Para os Helpers, utilizamos outra abordagem. Crie um arquivo PHP contendo o conteúdo abaixo e adicione ele como se fosse uma biblioteca do PHP (imagem acima):

<?php         
    $ajax = new AjaxHelper();
    $cache = new CacheHelper();
    $form = new FormHelper();
    $html = new HtmlHelper();
    $javascript = new JavascriptHelper();
    $number = new NumberHelper();
    $session = new SessionHelper();
    $text = new TextHelper();
    $time = new TimeHelper();
?>

Pronto, temos auto-complete em toda a nossa estrutura MVC. Meio gambiarra mas é muito útil. Diminui bastante as idas em API para lembrar de uma função, a ordem dos parâmetros e/ou uma pequena descrição.

Ps: Estou testando o Gist-it pois tomei uma azia com caracteres <> no Geshi

Tags: , ,
Topo

3 Comentários

Cozinhando: da fogueira ao microondas

postado por Fabrício Ferracioli em 18/08/2008 17:59:20

Comecei a programar para web usando PHP, quando o a versão 4 reinava sem nenhuma interferência do versão 5. Na época, ainda não trabalhava com Orientação a Objetos, mas tinha o interesse em aprender. Foi então que decidi aprender logo o PHP 5, pois li que seu suporte a O.O. era muito melhor. Hoje lamento o fato do PHP 4 ser descontinuado somente agora, se fosse naquele tempo não notaria a diferença.

Em conjunto com o PHP tive que aprender uma variedade de coisas para realmente poder desenvolver. HTML, CSS, UML, JavaScript, SQL, arquitetura Cliente-Servidor, HTTP, entre outros. Pois é, eu imaginava que somente com o PHP faria milagres, afinal era muito mais fácil que C, a linguagem que melhor conhecia. Agora vocês perguntam: “C? Mas C para web? Por que não iniciou com outra?” Calma, inicei na programação com desktop, programas de faculdade. Com isso tive uma boa base, mas o que eu realmente queria era Web!

Após algum tempo já conseguia desenvolver aplicações um pouco mais completas. Já possuia conhecimento para desenvolver aplicações orientadas a objeto, utilizando banco de dados, o que pra mim era impressionante. Mas com os projetos sendo finalizados e iniciados, percebi que sempre havia a necessidade de implementar alguns módulos em todos os projetos. Para minimizar o meu trabalho resgatei alguns códigos já desenvolvidos, realizei um refactoring (é impressionante como um código pode melhorar depois de alguns meses após o seu término) e montei algumas classes com esses códigos que sempre utilizava em projetos. Agora sim, a maioria dos requisitos mais comuns podia ser implementada só com algumas chamadas de métodos que eu conhecia, afinal, havia desenvolvido.

Desenvolver suas próprias soluções e poder utilizá-las em diversos sistemas é algo bastante gratificante, pois mostra que o que foi desenvolvido está correto, certo? Nem sempre, a única pessoa que garantia que meu código estava correto era eu mesmo. Não havia mais ninguém que poderia falar bem de meu código. Testes? Na época eu testava, sim. Mas não seguia nenhuma metodologia.

Rodou e deu uma resposta certa? Beleza! Funciona!.

Mesmo nunca tendo grandes problemas com as minhas classes, ainda era necessária uma camada a mais de profissionalismo.
Em algumas “conversas de desenvolvedor” acabei conhecendo através de meus companheiros o framework CakePHP. Fiquei muito animado com as informações que tive quando conheci, tudo parecia fácil e rápido, uma ótima primeira impressão! Logo entrei no site, fiz o download, li algumas especificações, achei coisas mais interessantes do que já havia ouvido falar. Era o momento de começar a desenvolver. Apesar da experiência com PHP e outros conhecimentos relacionados a web, acabei esbarrando no conceito de MVC. Já desenvolvia em camadas há algum tempo, mas da minha maneira; eu fazia meu MVC. Tive um pouco de dificuldade para aprender, era até engraçado: “De onde surgiu essa variável? Essa classe, onde foi declarada?”. Via o pessoal programando com o CakePHP e achava tudo muito incrível. Quando chegava minha vez, era frustante.

Mas, da mesma maneira que acontece com qualquer linguagem, existe uma curva de aprendizado. Como já programava em PHP imaginei que seria muito fácil sair desenvolvendo bem em CakePHP. Depois de compreender como o Framework é estruturado e o funcionamento do MVC, foi tudo voltando a normalidade. Bastam algumas consultas no manual ou na API para resolver as dúvidas. Agora sim, encontrei uma solução confiável! E dessa vez, não sou apenas eu que digo isso, mas toda uma comunidade. Além disso, confirmo a minha impressão inicial, realmente é muito fácil e rápido. Além disso, a estrutura do MVC proporciona uma separação entre dados e lógica que ajuda muito no desenvolvimento, ficando extremamente mais simples de realizar manutenção em código, visto que o problema é mais fácilmente localizado.

Agora, vamos a um pequeno exercício de imaginação que resume tudo isso. Imagine que você precisa fazer um bolo rapidamente. Agora vamos imaginar quatro situações.

Na primeira você só dispõe de uma fogueira. Não há tigelas, colheres, nada, somente a fogueira. Você tem liberdade para utilizar qualquer recurso e transformá-lo em ferramenta. Certamente, nesse contexto, você se tornará alguém muito flexível, pois ganhará capacidade de fazer o bolo com muitos meios diferentes, entretanto, até conseguir montar as ferramentas necessárias para confecção do bolo, muito tempo teria passado e até mesmo a fogueira já poderia ter se apagado. Agora faça uma analogia com a minha experiência em C. Aprendi a programar e a realizar tarefas de diversas maneiras, entretanto, quando fosse necessária agilidade no desenvolvimento, provavelmente perderia muito tempo desenvolvendo uma solução, que ao fim poderia dar errado.

Agora pense que você possui um fogão a lenha, algumas ferramentas rudimentares e uma forma para o bolo. Ainda não será muito ágil seu desenvolvimento, pois somente para acender o fogo você terá que cortar lenha e colocar no fogão. Além disso, ainda será necessário preparar os ingredientes do bolo com ferramentas que nem sempre são adequadas ou que ainda podem melhorar muito. Apesar de ser um pouco mais rápido que a situação anterior, ainda não é uma maneira muito profissional de cozinhar, e está em total desuso nos padrões atuais. Agora ligue esses fatos ao PHP 4. Apesar de ser possível fazer muitas coisas interessantes, é necessário pensar em diversas características que são obsoletas ou podem melhorar.

Agora pense que você possui um fogão industrial! Puxa, melhorou bastante! Além do fogão você tem muitas ferramentas, desde pequenas colheres até batedeiras. Fazer o bolo nesse ponto será muito mais fácil, mesmo que você não saiba como. Procure uma receita e apenas siga os passos. É bem provável que o resultado obtido nesse ponto seja bem interessante, e um pouco menos demorado, dependendo da complexidade da receita. Ao terminar você vê o seu bolo e se orgulha do resultado, ele parece extremamente saboroso. Mas, certamente nem todos vão gostar dele. Algo semelhante pode acontecer com minhas classes em PHP 5. Apesar de ser muito interessante pra mim utilizá-las, não garanto que elas serão efetivas em todos os sistemas, e que poderão ser utilizadas em qualquer sistema sem modificações.

Finalmente, imagine que você possui um microoondas e uma daquelas caixinhas de bolo! Agora vocês pensam:

Mas o bolo de microondas é muito inferior ao bolo feito no fogão ingrediente a ingrediente!

Concordo plenamente com vocês. Minha mãe é confeiteira, sei como demora e dá trabalho, mas também sei como fica gostoso um bolo feito passo a passo! Mas estamos analisando agilidade. O bolo de microondas fica pronto em poucos passos e pouco tempo. Além disso, a probabilidade de dar errado é mínima, basta seguir a receita do verso e não ultrapassar o tempo necessário para que ele fique pronto. Isso é o que possível com o CakePHP. Uma solução robusta, rápida e testada. Apesar de desenvolver suas próprias soluções ser extremamente mais saboroso e gratificante, projetos não estão somente ligados a parte de programação. São necessárias algumas garantias que o CakePHP ajuda a maximizar.

Aos que não conhecem o CakePHP, fica meu incentivo para que garantam sua fatia desse bolo delicioso! Bom apetite!

Carrot Cake Pac Man
Creative Commons License photo credit: Aaron_M

Tags: , , ,
Topo

Sem comentários

Creative Commons License
Sou Ágil: KISS em http://kiss.souagil.com.br está licenciado sobre
Creative Commons Attribution-Share Alike 2.5 Brazil License.

souÁgil