Neste post serão abordadas algumas características e funcionalidades que podem ser encontradas no framework de desenvolvimento CakePHP, assunto tratado no primeiro de uma série de mini-cursos ministrados na própria empresa. Estes mini-cursos têm duração de aproximadamente uma hora e neles buscamos disseminar o conhecimento entre toda a equipe.Talvez você não tenha entendido muito bem o porquê do subtítulo. Estamos utilizando metodologias ágeis para o desenvolvimento de nossos projetos, entre elas SCRUM e práticas de XP. Percebemos que essas práticas aliadas a um framework como o CakePHP possibilitam um ROI (Retorno de Investimento) para nossos clientes muito maior, automatizando tarefas braçais como a criação de CRUDs (create, retrieve, update e delete), validações de formulários e ORM (mapeamento objeto-relacional).
Além de poder ser utilizado livremente nos projetos desenvolvemos para clientes (é gratuito e de código aberto), ele ajuda a trabalhar de forma estruturada, nas camadas já definidas, sem deixar de ser flexível.
As convenções são um dos recursos bastante explorados no CakePHP. CoC (Convention over Configuration) é um conceito bastante utilizados no desenvolvimento de frameworks. Convenção sobre configuração exige menos arquivos de configuração (devido às convenções) sem perder a liberdade (ainda é possível configurar). Junto a este conceito podemos relembrar outros dois, que nos ajudam a produzir códigos de boa qualidade, o DRY (Don’t Repeat Yourself) e o KISS (Keep It Simple Stupid). Basicamente estes dois últimos conceitos nos ensinam a evitar a repetição de código, o famoso copiar-e-colar, e a criar códigos simples de serem compreendidos.
É importante sempre ter em mente o famoso bolo do CakePHP, onde fica evidente a forma como devemos tratar as camadas da aplicação. Deixe a maior quantidade de código possível na model, é onde se consegue uma maior reutilização de código e também onde é mais fácil utilizar testes automatizados. View é só para montar o html, utilizando os helpers!
Também é possível extender as views, models e controllers usando, respectivamente, helpers, behaviors e components. Enquanto é muito comum, praticamente essencial, a utilização dos helpers para a criação de views, o uso de components parece ser ignorado por muitos. Os components são muito úteis quando é necessário criar código que deve ser compartilhado entre diversas controllers, mas que não faz sentido ficar em uma model, por exemplo o EmailComponent, nativo do CakePHP, que permite envio de email de forma simples e utilizando templates.
Remover acentos de palavras em português é muitas vezes necessário, utilizar o método Inflector::slug() pode ser uma alternativa interessante.
O uso de DataSources também é muitas vezes esquecido. Embora a principal fonte de dados seja um banco de dados, é possível manipular dados de outras fontes como feeds RSS, arquivos CSV, entradas LDAP e eventos iCal. É possível associar uma model conectada a um DataSource LDAP com uma associada a eventos iCal.
Plugins se comportam como uma pequena aplicação, não tendo ciência do restante da aplicação. Basicamente é um conjunto de models, views e controllers empacotadas, possivelmente com imagens, css e js juntos. Criar a aplicação dividida em módulos como gerenciamento de usuários, financeiro e controle de estoque é algo que pode ajudar muito no reaproveitamento de código entre projetos diferentes.
Se o visual da aplicação precisa ser flexivel, Theming é uma ótima opção. Cada arquivo css/js encontrado na pasta do tema sobrescreve o arquivo original. Para mudar o tema basta setar um atributo da controller, seja de acordo por usuário, de acordo com o perfil ou específico para comemorações ou promoções. Se apenas alterar o css não for suficiente para deixar o tema com o visual ou conteúdo desejado, basta reescrever a view para aquele tema.
REST (Representational state transfer) é uma arquitetura de software para sistemas de hipermídia distribuídos. O estado da aplicação e suas funcionalidades ficam em resources que são acessados por URIs, segundo um modelo cliente-servidor. Para desenvolver uma aplicação que use REST alguns princípios devem ser observados, entre eles:
- Resources acessados por URIs
- Interação sem estado entre requisições
- Métodos padrões e tipos de mídia indicam a semântica
- Respostas indicam a possibilidade/duração de cache
- Permite que proxies, gateways e firewalls trabalhem ajudando de forma transparente
Já usa o CakePHP ou que começar a usar? Baixe o Cheatsheet do CakePHP para imprimir e colar na parede! Nele você encontra um resumo dos principais comandos disponíveis no CakePHP versão 1.2.
Se achou interessante esses comentários e deseja ver a apresentação completa do mini-curso de CakePHP fique a vontade. Comentários e sugestões são sempre bem vindas.