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
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.
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.
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).
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.
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.
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.
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.
ZEND FRAMEWORK 2
ZEND FRAMEWORK 2 - ORGANIZAÇÃO,
ESTRUTURA E FUNCIONAMENTO
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);
ZEND FRAMEWORK 2 - PONTOS FORTES
●

Documentação: Possui documentação extensa;
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.
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 aplicações de média e alta
complexidade.
CODE IGNITER
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
ORGANIZAÇÃO, ESTRUTURA E
FUNCIONAMENTO
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.
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.
ORGANIZAÇÃO, ESTRUTURA E
FUNCIONAMENTO
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.
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.
CAKE PHP
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.
ORGANIZAÇÃO, ESTRUTURA E
FUNCIONAMENTO
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.
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.
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.
ORGANIZAÇÃO, ESTRUTURA E
FUNCIONAMENTO
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.
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.
APLICABILIDADE - CAKE E CI
● Framework bastante indicado para o desenvolvimento de
aplicações web de baixa e média complexidade.
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.
REFERÊNCIAS
●
●
●
●
●
●
●
●
●
●

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_(computação)
REFERÊNCIAS
●
●
●
●
●
●
●
●
●
●
●

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/
REFERÊNCIAS
●
●
●
●
●

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

Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend