Anlise sobre a utilizao de
frameworks em PHP:
CakePHP, CodeIgniter e Zend
Thiago Sinsio
Yan Magalhes
20 de novembro de 2013
O QUE SO FRAMEWORKS ?
Estrutura de suporte definida em que um outro projeto de software
pode ser organizado e desenvolvido;
Inclui programas de suporte, bibliotecas de cdigo, linguagens de
script e outros softwares para auxiliar no desenvolvimento.
DIFERENA ENTRE API x BIBLIOTECA x
FRAMEWORK
Framework: uma base pronta que nos permite criar aplicaes de forma mais rpida,
investindo menos tempo em produzir cdigo repetido e mais tempo no desenvolvimento real
da aplicao. Ao contrrio das bibliotecas, so os frameworks que ditam a estrutura e o fluxo
de controle que a aplicao deve ser construda;
Ex: Zend Framework
Application Programming Interface (Interface de Programao de Aplicativos) - API: Software
que permite a utilizao de seus servios sem a necessidade do utilizador envolver-se com
detalhes de sua implementao;
Ex: API do facebook.
Biblioteca: Conjunto de classes e mtodos que auxiliam no desenvolvimento de aplicaes.
Ex: jQuery.
VANTAGENS EM UTILIZAR UM
FRAMEWORK
Utilidade: Auxilia no desenvolvimento de aplicaes e softwares. Possuem funcionalidades
nativas, que ajudam a resolver questes sobre programao do dia-a-dia com qualidade e
eficincia.
A maioria dos bons frameworks j traz nativamente funcionalidades como: Validao de
formulrios; Filtro de entrada e sada de dados; Abstrao da camada de banco de dados;
Manipulao de session e cookie; Email; Calendrio; Paginao, sem contar inmeros
plugins construdos pela comunidade;
Segurana: Os bons frameworks so projetados de modo a garantir a segurana da
aplicao, tratando de forma nativa os ataques mais comuns como o SQL Injection, XSS,
etc;
Economia de tempo: A mdio e longo prazo ganha-se tempo no desenvolvimento de
aplicaes, uma vez que tarefas repetitivas no so mais executadas, trabalhando assim
com o conceito DRY (Dont Repeat Yourself).
VANTAGENS EM UTILIZAR UM
FRAMEWORK
Documentao: Geralmente disponibilizam material de qualidade nos web sites ou
repositrios oficiais, com uma vasta documentao a respeito. Alm disso, os bons
frameworks sempre tm uma comunidade de desenvolvedores dispostos a se
ajudarem entre si;
Organizao: quando se instala um framework PHP, ele j vem com uma estrutura
de pastas. Com isso, se espera que os desenvolvedores mantenham este padro
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, fruns de discusso, etc.
VANTAGENS EM UTILIZAR UM
FRAMEWORK
Padro MVC: a maioria dos frameworks utilizam este padro;
Performance: Este um dos principais pontos que os opositores discutem, porm, devese analisar que desenvolvedores so mais caros que servidores. De qualquer maneira, a
maioria deles possuem ferramentas para caching, benchmarks, profiling, etc. Os
frameworks modernos tambm utilizam carregamento dinmico que carregam somente o
necessrio;
Trabalho em equipe: A maneira que os projetos so organizados ajudam a criar um
ambiente favorvel para o trabalho em equipe, como por exemplo permitir a equipe de
front-end trabalhar somente na View.
DESVANTAGENS EM UTILIZAR UM
FRAMEWORK
Aprender o framework, no a linguagem: se o desenvolvedor souber pouco
sobre a linguagem, ele aprender o framework e no a linguagem propriamente
dita;
Limitao: No possvel modificar o comportamento do core do framework,
ento, o desenvolvedor forado a respeitar estas limitaes e trabalhar no
caminho requerido. Com isso, necessrio ter certeza do framework que est
sendo escolhido;
Cdigo pblico: Uma vez que o framework est disponvel para todos, isto inclui
pessoas mal-intencionadas tambm.
DESVANTAGENS EM UTILIZAR UM
FRAMEWORK
Not Invented Here: Necessrio enfrentar a sndrome de "Isso no foi criado aqui";
Difcil adaptao: Muitas vezes a empresa precisa modificar muito seu processo
de desenvolvimento e investir em treinamento da equipe no framework;
Dependncia: Aps comear a usar frameworks, cria-se uma grande dependncia
deles.
ZEND FRAMEWORK 2
ZEND FRAMEWORK 2 - ORGANIZAO,
ESTRUTURA E FUNCIONAMENTO
ZEND FRAMEWORK 2 - PONTOS FORTES
Verses novas: Trabalha com os recursos mais novos das verses do PHP, 5.3+;
POO: 100% orientado a objetos;
Desenvolvido pela Zend: uma das empresas que mais contribuem para o
desenvolvimento do PHP, alm disso tem o apoio de empresas como Google e
Microsoft;
Atualizao: Sofre atualizaes e manutenes constantes (no est
abandonado);
ZEND FRAMEWORK 2 - PONTOS FORTES
Documentao: Possui documentao extensa;
ZEND FRAMEWORK 2 - PONTOS FORTES
Cdigo livre: O cdigo est disponvel no GitHub - https://github.
com/zendframework/zf2
Qualidade: Desenvolvido utilizando PHPUnit.
ZEND FRAMEWORK 2 - PONTOS FRACOS
Aprendizagem: Curva inicial de aprendizagem alta (h
relatos que na ZF2 foi muito reduzida);
ZEND FRAMEWORK 2 - APLICABILIDADE
Mais indicado para aplicaes de mdia e alta
complexidade.
CODE IGNITER
O QUE ?
CodeIgniter um framework PHP poderoso, construdo para
programadores PHP que necessitam de uma ferramenta simples
e elegante para criar aplicaes web com recursos completos.
Se voc um desenvolvedor que vive no mundo real das contas
de hospedagem compartilhada e clientes com prazos, ento
CodeIgniter pode ser um bom ajuste.
Texto Adaptado da Ellislab
ORGANIZAO, ESTRUTURA E
FUNCIONAMENTO
ORGANIZAO, ESTRUTURA E
FUNCIONAMENTO
No arquivo index.php (j vm pronto), so inicializados os recursos do CI
para carregar a aplicao;
Em seguida, chamado um routing (uma rota) para examinar a
requisio HTTP e determinar o que ser feito;
Caso j exista algo no cache do browser, a informao solicitada
retornada diretamente ao browser e em seguida, exibida ao usurio;
Antes do Controller responsvel por aquela solicitao ser acionado, a
requisio filtrada atravs das classes de Segurana.
ORGANIZAO, ESTRUTURA E
FUNCIONAMENTO
O Controller ento realiza o carregamento das Models,
Views, Libraries e executa os mtodos responsveis pela
requisio;
A View responsvel pelo processamento das informaes no
Controller (caso seja necessrio) ento enviada ao
browser, j ficando armazenada em cache.
ORGANIZAO, ESTRUTURA E
FUNCIONAMENTO
PRINCIPAIS VANTAGENS
Fcil atualizao: No compromete no funcionamento dos cdigos da
pasta application;
Comunidade bastante ativa: Repositrio oficial no GitHub;
Quase nenhum requisito de Hardware;
Leve (2,2 MB - 2.1.4);
Fcil Aprendizado: Bastante indicado pela comunidade para quem quer
aprender um framework php baseado em MVC;
Instalao: No Existe.
PRINCIPAIS DESVANTAGENS
No trabalha com AJAX de forma nativa;
Atualizao mais lenta, se for comparado a outros
frameworks;
Indeciso ao seu futuro.
CAKE PHP
O QUE ?
O CakePHP um framework de desenvolvimento rpido para PHP,
livre e de cdigo aberto com o objetivo de se criarem rpidas
aplicaes web, estruturadas e flexveis, seguindo o padro MVC.
ORGANIZAO, ESTRUTURA E
FUNCIONAMENTO
ORGANIZAO, ESTRUTURA E
FUNCIONAMENTO
app: Onde fica toda a aplicao Web;
lib: Onde fica o core do CakePHP;
vendors: Pasta responsvel por armazenar bibliotecas
externas;
.htacces e index.php.
ORGANIZAO, ESTRUTURA E
FUNCIONAMENTO
No arquivo index.php (j vm pronto), so inicializados os
recursos do Cake para carregar a aplicao;
Em seguida, a requisio HTTP examinada por um dispatcher
(expedidor) que dever encaminhar a informao solicitada ao
Controller responsvel por determinada ao;
Ao ser executado, o Controller se comunica com a camada Model
para processar informaes de insero/busca no BD.
ORGANIZAO, ESTRUTURA E
FUNCIONAMENTO
Ao trmino da busca ele se comunica com a View
responsvel pela requisio HTTP ou o objeto View que
dever exibir a informao para o usurio, para gerar o
resultado informado pelo Model e processado pelo
Controller;
Logo depois desta etapa, a informao chega ao Browser,
transmitindo a informao ao usurio.
ORGANIZAO, ESTRUTURA E
FUNCIONAMENTO
PRINCIPAIS VANTAGENS
Trabalha com AJAX de forma nativa;
Comunidade bastante ativa: Repositrio 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;
Instalao: No Existe.
PRINCIPAIS DESVANTAGENS
Poucas classes de Helpers;
Exige mais habilidades do programador, caso queira se trabalhar com Design
Patterns (Padres de Projeto) ou modificar alguma estrutura do framework;
Atualizao 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 necessrio dedicar um tempo maior na fase de anlise
do projeto.
APLICABILIDADE - CAKE E CI
Framework bastante indicado para o desenvolvimento de
aplicaes web de baixa e mdia complexidade.
CONCLUSO
Testar em algum projeto, para analisar o impacto no desenvolvimento, manuteno,
performance, etc;
Manter a mente aberta para novas tecnologias;
Uma vez que entender como o framework funciona, saber trabalhar com o bsico
de todos os produtos;
Aprender a trabalhar com eles e conseguir desenvolvedor possvel funcionalidades
no existentes.
REFERNCIAS
http://blog.thiagobelem.net/frameworks-no-php-o-que-quando-porque-e-qual
http://codeigniterbrasil.com/passos-iniciais/o-que-e-um-framework-definicao-ebeneficios-de-se-usar-frameworks/
http://pt.wikipedia.org/wiki/Framework
http://pt.wikipedia.org/wiki/API
http://www.youtube.com/watch?v=KX2N5k-OcFs
http://jquerybrasil.org/jquery-biblioteca-ou-framework/
http://www.slideshare.net/aitproeg/framework-usar-ou-no-usar
http://www.phpandstuff.com/articles/top-10-reasons-why-you-should-use-a-phpframework
http://en.wikipedia.org/wiki/Profiling_(computer_programming)
http://pt.wikipedia.org/wiki/Benchmark_(computao)
REFERNCIAS
http://www.1stwebdesigner.com/design/pros-cons-frameworks/
http://en.wikipedia.org/wiki/Not_invented_here
http://phpatual.blogspot.com.br/2012/03/vantagens-e-desvantagens-de-usar.html
http://framework.zend.com/
http://www.slideshare.net/ergalvao/zf2-menor-melhor-e-mais-poderoso
http://www.php-developer.org/most-used-php-framework-the-popular-top-7-list-inyear-2011/
http://codeigniterbrasil.com/
http://ellislab.com/codeigniter
http://www.phpframeworks.com/
http://www.phptherightway.com/
http://api.cakephp.org/2.4/
REFERNCIAS
http://book.cakephp.org/2.0/pt/installation.html
http://blog.thiagobelem.net/frameworks/cakephp/
https://groups.google.com/forum/#!topic/cakephp-pt/Vjdaw221VDc
http://blog.thiagobelem.net/atualizando-seu-projeto-em-cakephp-para-a-versao-2-0/
Livro - PHP e MVC com CodeIgniter : Editora Novatec