análise sobre a utilização de frameworks em php: cakephp, codeigniter e zend

37
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

Upload: thiago-sinesio

Post on 02-Jul-2015

8.083 views

Category:

Technology


1 download

DESCRIPTION

Apresentação desenvolvida para reunião semanal na empresa ConstruSite Brasil.

TRANSCRIPT

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

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

CakePHP, CodeIgniter e Zend

Thiago SinésioYan Magalhães

20 de novembro de 2013

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

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.

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

DIFERENÇA ENTRE API x BIBLIOTECA x FRAMEWORKFramework: É 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.

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

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

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

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.

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

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

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

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.

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

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.

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

ZEND FRAMEWORK 2

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

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

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

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

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

ZEND FRAMEWORK 2 - PONTOS FORTES

● Documentação: Possui documentação extensa;

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

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.

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

ZEND FRAMEWORK 2 - PONTOS FRACOS

● Aprendizagem: Curva inicial de aprendizagem alta (há relatos que na ZF2 foi muito reduzida);

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

ZEND FRAMEWORK 2 - APLICABILIDADE

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

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

CODE IGNITER

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

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

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

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

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

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.

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

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.

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

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

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

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.

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

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.

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

CAKE PHP

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

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.

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

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

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

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.

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

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.

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

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.

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

ORGANIZAÇÃO, ESTRUTURA E FUNCIONAMENTO

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

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.

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

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.

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

APLICABILIDADE - CAKE E CI

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

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

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.

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

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-e-

beneficios-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-php-

framework● http://en.wikipedia.org/wiki/Profiling_(computer_programming)● http://pt.wikipedia.org/wiki/Benchmark_(computação)

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

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-in-

year-2011/● http://codeigniterbrasil.com/● http://ellislab.com/codeigniter● http://www.phpframeworks.com/● http://www.phptherightway.com/● http://api.cakephp.org/2.4/

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

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