Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
1. Análise sobre a utilização de
frameworks em PHP:
CakePHP, CodeIgniter e Zend
Thiago Sinésio
Yan Magalhães
20 de novembro de 2013
2. O QUE SÃO FRAMEWORKS ?
● Estrutura de suporte definida em que um outro projeto de software
pode ser organizado e desenvolvido;
● Inclui programas de suporte, bibliotecas de código, linguagens de
script e outros softwares para auxiliar no desenvolvimento.
3. DIFERENÇA ENTRE API x BIBLIOTECA x
FRAMEWORK
Framework: É uma base pronta que nos permite criar aplicações de forma mais rápida,
investindo menos tempo em produzir código repetido e mais tempo no desenvolvimento real
da aplicação. Ao contrário das bibliotecas, são os frameworks que ditam a estrutura e o fluxo
de controle que a aplicação deve ser construída;
Ex: Zend Framework
Application Programming Interface (Interface de Programação de Aplicativos) - API: Software
que permite a utilização de seus serviços sem a necessidade do utilizador envolver-se com
detalhes de sua implementação;
Ex: API do facebook.
Biblioteca: Conjunto de classes e métodos que auxiliam no desenvolvimento de aplicações.
Ex: jQuery.
4. VANTAGENS EM UTILIZAR UM
FRAMEWORK
●
Utilidade: Auxilia no desenvolvimento de aplicações e softwares. Possuem funcionalidades
nativas, que ajudam a resolver questões sobre programação do dia-a-dia com qualidade e
eficiência.
A maioria dos bons frameworks já traz nativamente funcionalidades como: Validação de
formulários; Filtro de entrada e saída de dados; Abstração da camada de banco de dados;
Manipulação de session e cookie; Email; Calendário; Paginação, sem contar inúmeros
plugins construídos pela comunidade;
●
Segurança: Os bons frameworks são projetados de modo a garantir a segurança da
aplicação, tratando de forma nativa os ataques mais comuns como o SQL Injection, XSS,
etc;
●
Economia de tempo: A médio e longo prazo ganha-se tempo no desenvolvimento de
aplicações, uma vez que tarefas repetitivas não são mais executadas, trabalhando assim
com o conceito DRY (Don’t Repeat Yourself).
5. VANTAGENS EM UTILIZAR UM
FRAMEWORK
●
Documentação: Geralmente disponibilizam material de qualidade nos web sites ou
repositórios oficiais, com uma vasta documentação a respeito. Além disso, os bons
frameworks sempre têm uma comunidade de desenvolvedores dispostos a se
ajudarem entre si;
●
Organização: quando se instala um framework PHP, ele já vem com uma estrutura
de pastas. Com isso, se espera que os desenvolvedores mantenham este padrão
inicial e o projeto se mantenha organizado;
●
Suporte da comunidade: Todos os frameworks populares possuem uma
comunidade ativa. Assim, pode-se conversar com outros desenvolvedores, pedir
ajuda, feedback, fóruns de discussão, etc.
6. VANTAGENS EM UTILIZAR UM
FRAMEWORK
●
Padrão MVC: a maioria dos frameworks utilizam este padrão;
●
Performance: Este é um dos principais pontos que os opositores discutem, porém, devese analisar que desenvolvedores são mais caros que servidores. De qualquer maneira, a
maioria deles possuem ferramentas para caching, benchmarks, profiling, etc. Os
frameworks modernos também utilizam carregamento dinâmico que carregam somente o
necessário;
●
Trabalho em equipe: A maneira que os projetos são organizados ajudam a criar um
ambiente favorável para o trabalho em equipe, como por exemplo permitir a equipe de
front-end trabalhar somente na View.
7. DESVANTAGENS EM UTILIZAR UM
FRAMEWORK
●
Aprender o framework, não a linguagem: se o desenvolvedor souber pouco
sobre a linguagem, ele aprenderá o framework e não a linguagem propriamente
dita;
●
Limitação: Não é possível modificar o comportamento do core do framework,
então, o desenvolvedor é forçado a respeitar estas limitações e trabalhar no
caminho requerido. Com isso, é necessário ter certeza do framework que está
sendo escolhido;
●
Código público: Uma vez que o framework está disponível para todos, isto inclui
pessoas mal-intencionadas também.
8. DESVANTAGENS EM UTILIZAR UM
FRAMEWORK
●
Not Invented Here: Necessário enfrentar a síndrome de "Isso não foi criado aqui";
●
Difícil adaptação: Muitas vezes a empresa precisa modificar muito seu processo
de desenvolvimento e investir em treinamento da equipe no framework;
●
Dependência: Após começar a usar frameworks, cria-se uma grande dependência
deles.
11. ZEND FRAMEWORK 2 - PONTOS FORTES
●
Versões novas: Trabalha com os recursos mais novos das versões do PHP, 5.3+;
●
POO: 100% orientado a objetos;
●
Desenvolvido pela Zend: uma das empresas que mais contribuem para o
desenvolvimento do PHP, além disso tem o apoio de empresas como Google e
Microsoft;
●
Atualização: Sofre atualizações e manutenções constantes (não está
abandonado);
12. ZEND FRAMEWORK 2 - PONTOS FORTES
●
Documentação: Possui documentação extensa;
13. ZEND FRAMEWORK 2 - PONTOS FORTES
●
Código livre: O código está disponível no GitHub - https://github.
com/zendframework/zf2
●
Qualidade: Desenvolvido utilizando PHPUnit.
14. ZEND FRAMEWORK 2 - PONTOS FRACOS
● Aprendizagem: Curva inicial de aprendizagem alta (há
relatos que na ZF2 foi muito reduzida);
15. ZEND FRAMEWORK 2 - APLICABILIDADE
● Mais indicado para aplicações de média e alta
complexidade.
17. O QUE É ?
“CodeIgniter é um framework PHP poderoso, construído para
programadores PHP que necessitam de uma ferramenta simples
e elegante para criar aplicações web com recursos completos.
Se você é um desenvolvedor que vive no mundo real das contas
de hospedagem compartilhada e clientes com prazos, então
CodeIgniter pode ser um bom ajuste.”
Texto Adaptado da Ellislab
19. ORGANIZAÇÃO, ESTRUTURA E
FUNCIONAMENTO
●
No arquivo “index.php” (já vêm pronto), são inicializados os recursos do CI
para carregar a aplicação;
●
Em seguida, é chamado um “routing” (uma rota) para examinar a
requisição HTTP e determinar o que será feito;
●
Caso já exista algo no cache do browser, a informação solicitada é
retornada diretamente ao browser e em seguida, exibida ao usuário;
●
Antes do Controller responsável por aquela solicitação ser acionado, a
requisição é filtrada através das classes de Segurança.
20. ORGANIZAÇÃO, ESTRUTURA E
FUNCIONAMENTO
● O Controller então realiza o carregamento das Models,
Views, Libraries e executa os métodos responsáveis pela
requisição;
● A View responsável pelo processamento das informações no
Controller (caso seja necessário) é então enviada ao
browser, já ficando armazenada em cache.
22. PRINCIPAIS VANTAGENS
●
Fácil atualização: Não compromete no funcionamento dos códigos da
pasta application;
●
Comunidade bastante ativa: Repositório oficial no GitHub;
●
Quase nenhum requisito de Hardware;
●
Leve (2,2 MB - 2.1.4);
●
Fácil Aprendizado: Bastante indicado pela comunidade para quem quer
aprender um framework php baseado em MVC;
●
Instalação: Não Existe.
23. PRINCIPAIS DESVANTAGENS
● Não trabalha com AJAX de forma nativa;
● Atualização mais lenta, se for comparado a outros
frameworks;
● Indecisão ao seu futuro.
25. O QUE É ?
O CakePHP é um framework de desenvolvimento rápido para PHP,
livre e de código aberto com o objetivo de se criarem rápidas
aplicações web, estruturadas e flexíveis, seguindo o padrão MVC.
27. ORGANIZAÇÃO, ESTRUTURA E
FUNCIONAMENTO
● app: Onde fica toda a aplicação Web;
● lib: Onde fica o core do CakePHP;
● vendors: Pasta responsável por armazenar bibliotecas
externas;
● .htacces e index.php.
28. ORGANIZAÇÃO, ESTRUTURA E
FUNCIONAMENTO
● No arquivo “index.php” (já vêm pronto), são inicializados os
recursos do Cake para carregar a aplicação;
● Em seguida, a requisição HTTP é examinada por um dispatcher
(expedidor) que deverá encaminhar a informação solicitada ao
Controller responsável por determinada ação;
● Ao ser executado, o Controller se comunica com a camada Model
para processar informações de inserção/busca no BD.
29. ORGANIZAÇÃO, ESTRUTURA E
FUNCIONAMENTO
● Ao término da busca ele se comunica com a View
responsável pela requisição HTTP ou o objeto View que
deverá exibir a informação para o usuário, para gerar o
resultado informado pelo Model e processado pelo
Controller;
●
Logo depois desta etapa, a informação chega ao Browser,
transmitindo a informação ao usuário.
31. PRINCIPAIS VANTAGENS
●
Trabalha com AJAX de forma nativa;
●
Comunidade bastante ativa: Repositório oficial no GitHub;
●
Quase nenhum requisito de Hardware;
●
Leve (2,0 MB - 2.4.2);
●
Facilidade de trabalho com frameworks Front-End. Ex: Twitter Bootstrap;
●
Bastante Robusto;
●
Instalação: Não Existe.
32. PRINCIPAIS DESVANTAGENS
●
Poucas classes de Helpers;
●
Exige mais habilidades do programador, caso queira se trabalhar com Design
Patterns (Padrões de Projeto) ou modificar alguma estrutura do framework;
●
Atualização do framework requer testes no projeto;
●
Por ter uma curva de aprendizado alta, requer um tempo maior para estudos e
testes, com o objetivo de conhecer melhor o funcionamento do framework;
●
Por ser mais robusto é necessário dedicar um tempo maior na fase de análise
do projeto.
33. APLICABILIDADE - CAKE E CI
● Framework bastante indicado para o desenvolvimento de
aplicações web de baixa e média complexidade.
34. CONCLUSÃO
●
Testar em algum projeto, para analisar o impacto no desenvolvimento, manutenção,
performance, etc;
●
Manter a mente aberta para novas tecnologias;
●
Uma vez que entender como o framework funciona, saberá trabalhar com o básico
de todos os produtos;
●
Aprender a trabalhar com eles e conseguir desenvolvedor possível funcionalidades
não existentes.