Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
-
Upload
thiago-sinesio -
Category
Technology
-
view
8.085 -
download
1
description
Transcript of 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
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 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.
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, 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.
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-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)
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/
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