Vous êtes sur la page 1sur 37
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend 20 de novembro

Análise sobre a utilização de frameworks em PHP:

CakePHP, CodeIgniter e Zend

20 de novembro de 2013 Thiago Sinésio Yan Magalhães
20 de novembro de 2013
Thiago Sinésio
Yan Magalhães

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.

de suporte, bibliotecas de código, linguagens de script e outros softwares para auxiliar no desenvolvimento.

DIFERENÇA ENTRE API x BIBLIOTECA x FRAMEWORK

DIFERENÇA ENTRE API x BIBLIOTECA x FRAMEWORK Framework : É uma base pronta que nos permite

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.

do facebook. Biblioteca: Conjunto de classes e métodos que auxiliam no desenvolvimento de aplicações. Ex: jQuery.

VANTAGENS EM UTILIZAR UM FRAMEWORK

VANTAGENS EM UTILIZAR UM FRAMEWORK ● Utilidade: Auxilia no desenvolvimento de aplicações e softwares . Possuem

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).

vez que tarefas repetitivas não são mais executadas, trabalhando assim com o conceito DRY ( Don’t

VANTAGENS EM UTILIZAR UM FRAMEWORK

VANTAGENS EM UTILIZAR UM FRAMEWORK ● Documentação: Geralmente disponibilizam material de qualidade nos web sites

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.

ativa. Assim, pode-se conversar com outros desenvolvedores, pedir ajuda, feedback , fóruns de discussão, etc.

VANTAGENS EM UTILIZAR UM FRAMEWORK

VANTAGENS EM UTILIZAR UM FRAMEWORK ● Padrão MVC: a maioria dos frameworks utilizam este padrão; ●

Padrão MVC: a maioria dos frameworks utilizam este padrão;

Performance: Este é um dos principais pontos que os opositores discutem, porém, deve- se 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.

favorável para o trabalho em equipe, como por exemplo permitir a equipe de front-end trabalhar somente

DESVANTAGENS EM UTILIZAR UM FRAMEWORK

DESVANTAGENS EM UTILIZAR UM FRAMEWORK ● Aprender o framework , não a linguagem: se o desenvolvedor

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.

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

DESVANTAGENS EM UTILIZAR UM FRAMEWORK ● Not Invented Here : Necessário enfrentar a síndrome de "Isso

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.

da equipe no framework ; ● Dependência: Após começar a usar frameworks , cria-se uma grande

ZEND FRAMEWORK 2

ZEND FRAMEWORK 2
ZEND FRAMEWORK 2

ZEND FRAMEWORK 2 - ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

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

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;

● Documentação: Possui documentação extensa;
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.

Qualidade: Desenvolvido utilizando PHPUnit.

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);

2 - PONTOS FRACOS ● Aprendizagem: Curva inicial de aprendizagem alta (há relatos que na ZF2

ZEND FRAMEWORK 2 - APLICABILIDADE

● Mais indicado para aplicações de média e alta complexidade.

ZEND FRAMEWORK 2 - APLICABILIDADE ● Mais indicado para aplicações de média e alta complexidade.

CODE IGNITER

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

hospedagem compartilhada e clientes com prazos, então CodeIgniter pode ser um bom ajuste.” Texto Adaptado da

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO
ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO
ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO ● No arquivo “index.php” (já vêm pronto), são inicializados os recursos

● 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, requisição é filtrada através das classes de Segurança.

a

responsável por aquela solicitação ser acionado, requisição é filtrada através das classes de Segurança. a

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO ● O Controller então realiza o carregamento das Models , Views ,

● 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.

das informações no Controller (caso seja necessário) é então enviada ao browser , já ficando armazenada

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO
ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO
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.

indicado pela comunidade para quem quer aprender um framework php baseado em MVC; ● Instalação: Não

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.

forma nativa; ● Atualização mais lenta , se for comparado a outros frameworks ; ● Indecisão

CAKE PHP

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.

aberto com o objetivo de se criarem rápidas aplicações web , estruturadas e flexíveis, seguindo o

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO
ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO
ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO ● app: Onde fica toda a aplicação Web ; ● lib: Onde

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.

o core do CakePHP; ● vendors: Pasta responsável por armazenar bibliotecas externas; ● .htacces e index.php.

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO ● No arquivo “index.php” (já vêm pronto), são inicializados os recursos

● 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.

Ao ser executado, o Controller se comunica com a camada Model para processar informações de inserção/busca

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO ● Ao término da busca ele se comunica com a View responsável

● 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.

Controller ; ● Logo depois desta etapa, a informação chega ao Browser , transmitindo a informação

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO
ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO
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.

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.

do framework ; ● Por ser mais robusto é necessário dedicar um tempo maior na fase

APLICABILIDADE - CAKE E CI

Framework bastante indicado para o desenvolvimento de aplicações web de baixa e média complexidade.

- CAKE E CI ● Framework bastante indicado para o desenvolvimento de aplicações web de baixa

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.

os produtos; ● Aprender a trabalhar com eles e conseguir desenvolvedor possível funcionalidades não existentes.