24
Análise Frameworks PHP ZF2 CodeIgniter Yii

Analise frameworks php

Embed Size (px)

DESCRIPTION

Em uma visão macro, o que tiveram destaque para uma filtragem mais especificas foram o ZEND2 devido a robustez e grande credibilidade de mercado, CodeIgniter devido a grande parte do que saim do desenvolvimento "comum" e passam a ter um primeiro contado com algum tipo de framework, e suas comunidades bastante ativas, e Yii a mais jovens desse framework, porém com um grande crescimento nos últimos anos no meio do desenvolvimento PHP. Obtive um resultado positivo, pois aderir por uma escolhe bastante objetiva e que hoje tem me dado resultado de usabilidade e tempo.

Citation preview

Page 1: Analise frameworks php

Análise Frameworks PHPZF2 CodeIgniter Yii

Page 2: Analise frameworks php

Visão geralZEND FRAMEWORK 2Melhores práticas orientadas a objeto, PHP 5.3. Base de código ágil rigorosamente testados. Zend Framework é focado na construção mais segura, confiável e moderno aplicações Web 2.0, web services e consumir APIs amplamente disponíveis de fornecedores líderes como Google, Amazon, Yahoo!, Flickr. Podendo contar com uma equipe de ferramentas que contribui para uma credibilidade e potencial no produto, tais como o Zend Server é um servidor de aplicações web para executar e gerenciar aplicações PHP. Monitora aplicações, faz diagnóstico de problemas, otimiza e faz caching das aplicações, o Zend Plataform é um servidor web para monitorar e otimizar o desempenho de aplicações PHP e Zend Studio é um IDE para PHP.

CODEIGNITERCodeIgniter permite que você mantenha o foco em seu projeto minimizando a quantidade de código necessário para uma dada tarefa. Seu objetivo é permitir que você desenvolva projetos mais rapidamente do que se você estivesse escrevendo código a partir do zero, através de um conjunto de bibliotecas para as tarefas mais comuns necessárias, bem como uma interface simples e estrutura lógica para acessar essas bibliotecas. Facilidade no uso, pode se dizer que seria sua principal vantagem dos demais frameworks.

YIIYii é um framework PHP5 de alta performance baseado em componentes para desenvolvimento de aplicações Web de grande escala, promovendo projeto limpos e incentivo desenvolvimento rápido. De MVC, DAO / ActiveRecord, widgets, caching, Templates, Validação, RBAC hierárquico, Ajax, Auth Module, Módulos, serviços Web, a tematização, I18N e L10N, Yii fornece quase todos os recursos necessários para o desenvolvimento de aplicativos Web 2.0 de hoje.Ele vem embalado com ferramentas para ajudar a testar e depurar sua aplicação, e tem uma documentação clara e abrangente.

Page 3: Analise frameworks php

RecursosFramework PHP5 MVC Multiple

DB'sORM DB Objects Templates Caching Validation Ajax Auth

ModuleModules

Zend

CI- - -

Yii

MVC : Configuração Model-View-Controller.Multiple DB’s : Suporte múltiplos bancos de dados, sem ter que mudar nada.ORM : Mapeador objeto-registro, geralmente uma implementação do ActiveRecord.DB Objects : Indica se o framework inclui outros objetos de banco de dados, como uma TableGateWay.Templates : Indica se o framework tem um modelo de templates embutido.Caching : Indica se o framework inclui um objeto de cache ou de alguma forma outra forma de cache.Validation: Indica se o quadro tem uma validação embutida ou componente de filtragem.Ajax : Suporte embutido para o Ajax.Auth Module : Indica se o framework tem um módulo embutido para lidar com a autenticação do usuário.Módulos : Indica se o framework tem outros módulos, como um RSS feed parser, módulo de PDF ou qualquer outra coisa (útil).

Page 4: Analise frameworks php

Comunidades ZENDBlogs dos contribuintes, lista de e-mail do participantes brasileiro no zend, disponibilidade de download da API, twitter, documentação no github. Comunidades brasileiras ativas.

CIFóruns, documentação e wiki no Github, chats. Comunidade Codeigniter Brasil, diversidade de blogs para suporte do framework, guia de desenvolvimento.

YiiComunidades ativas com bastante diversidade, fóruns, chats, wiki, extensões, news, artigos, facebook, twitter e linked. Principais comunidades ficam no próprio site do Yii, fóruns por nacionalidade, assuntos e etc.

Page 5: Analise frameworks php

Suporte a Bancos SQL/NO SQLZENDFirebird, MariaDB, MySql,IMB DB2, Microsoft SQL Server,Oracle, PostgreSQL, SQLite.

Conexão a múltiplos bancosNoSql Zend_Couch, Zend_Nosql_Mongo, suporte e documentado.

CISqlite (Default),Mysql,PostgreSQL,Odbc.

Conexão a múltiplos banco.Não a suporte para banco NOSQL.

YIIMySQL 4.1 ou maior,PostgreSQL 7.3 ou maior,SQLite 2 e 3,Microsoft SQL Server 2000 ou maior,Oracle.

Active Record.No sql yiimongodbsuite , banco nosql Mongodb.Conexão a múltiplos banco.

Page 6: Analise frameworks php

Aderência ao BootstrapZENDZend Framework 2 , ja vem por padrão, pronto para uso.

CIProjeto com o bootstrap, pronto para uso.https://github.com/sjlu/CodeIgniter-Bootstrap

YIIExtensão Yii-Bootstrap, com documentação devido a adaptação ao framework.http://www.yiiframework.com/extension/yii-bootstrap/

Page 7: Analise frameworks php

DesenvolvimentoFacilidade de geração de código x liberdade de alteração para atender a requisitos

ZEND Bem definido devido ao MVC, Módulos, uso de Componentes, fazendo com que se tenha baixa dependência entre eles. A partir do processo de instalação e configuração até o desenvolvimento das primeiras aplicações é necessário grau de conhecimento básico em programação ou mesmos outros frameworks.

CIUso do MVC facilitando a estruturação do código, fácil instalação, uso de recursos necessário para uma aplicação, fonte flexível a mudanças, com todo suporte a documentação.

YIIPadrão MVC, Modular, comandos de geração de projetos Yiic, crud Gii, modo de DEBUG YII_DEBUG. Otimizando todo um desenvolvimento web, com as principais operação básicas. Fonte de fácil compreensão para alterações e novas funcionalidades.o todo um desenvolvimento web, com as principais operação básicas. Fonte de fácil compreensão para alterações e novas funcionalidades.

Page 8: Analise frameworks php

Sites / Sistemas que utilizamZENDBBC - http://www.bbc.co.uk/Serpro - https://www.serpro.gov.br/IBM - http://www.ibm.com/us/en/Magento - http://www.magentocommerce.com/NASA - http://www.nasa.gov/

CIArgo Host - http://www.argohost.net/Orotoro - http://orotoro.com/Media Root - http://www.mediaroost.com/Ukulima - http://ukulima.net/At&T Center - http://www.attcenter.com/

YIIStay - http://www.stay.com/Ashe Avenue- http://www.asheavenue.com/ (Dell, Intel, Asics, Diesel, Mtv)International Student - http://www.internationalstudent.com/Piclyf - http://piclyf.com/Nutrition IX - http://www.nutritionix.com/

Page 9: Analise frameworks php

Suporte a HA utilizando sessão e/ou Banco ou FS CompartilhadoZendSuporte Multi-Server no Zend ServerAlta disponibilidade e escalabilidade para aplicações PHPQuando a demanda em suas aplicações PHP requer estendê-los entre vários servidores, Zend Server pode garantir a alta disponibilidade e melhor escalabilidade. Ao adicionar as capacidades de gerenciamento de grupo do Zend Server, as equipes de TI podem monitorar e gerenciar centralmente várias instâncias Zend Server, tanto local como na nuvem.High AvailabilityAgrupamento Session oferece uma solução escalável failover integrado rápido, para suas aplicações PHP, com gerenciamento de grupo do Zend Server, sessões de usuário são sempre mantidos em vários servidores

CINão encontrei resposta coerente da parte do framework CodeIgniter.

YIINão encontrei resposta coerente da parte do Yii Frameworks.

Page 10: Analise frameworks php

Diretórios e Instalação CIGerar projeto ignite basta fazer o download do source no site, colar onde o apache interpreta suas paginas PHP.

Sistema de pastas:application/views/application/controller/application/model/application/config/routes.txtapplication/config/database.txt

Page 11: Analise frameworks php

ROUTES1) $route[url no browser] = 'cqualquer/view/$1'.

2) cqualquer classe controller a ser chamada (pelo nome da CLASSE e não do arquivo), view é a função do controller e $1 um parâmetro.

3) formato da rota pode ser representado por: Wildcards: $route['product/:num']="catalog/product_lookup"Expressões Regulares:$route['products/([a-z]+)/(\d+)'] = "$1/id_$2";

4) Prestar atenção na ordem de precedência (do específico ao mais genérico)ex:$route['qualquer'] = 'cqualquer/view';$route['(:any)'] = 'pages2/testeme/$1';$route['default_controller'] = 'pages2/view';

Page 12: Analise frameworks php

CONTROLLER1) nome da classe não é case sensitive.class cqualquer extends CI_Controller { public function view($page = 'qualquer') { if ( ! file_exists('application/views/paginas/'.$page.'.php')) { show_404(); } $data['title'] = ucfirst($page); $this->load->view('templates/header', $data); $this->load->view('paginas/'.$page, $data); $this->load->view('templates/footer', $data); }}

Page 13: Analise frameworks php

MODELclass News_model extends CI_Model { public function __construct() { $this->load->database(); } public function get_news() { $query = $this->db->get('news'); return $query->result_array(); }}(Na view) <?php foreach ($news as $news_item): ?>

<h2><?php echo $news_item['title'] ?></h2> <div id="main"> <?php echo $news_item['text'] ?> </div> <p><a href="news/<?php echo $news_item['slug'] ?>">View article</a></p>

<?php endforeach ?>

Page 14: Analise frameworks php

(No controller) //__construct vai chamar o construtor do seu parente (CI_Controller) public function __construct(){

parent::__construct();//carrega a classe model "news_model" e seus métodos para ser usado durante a execução.

$this->load->model('news_model');}public function index(){ $data['news'] = $this->news_model->get_news();

$data['title'] = 'News archive';

$this->load->view('templates/header', $data); $this->load->view('news/index', $data); $this->load->view('templates/footer');}

Page 15: Analise frameworks php

DATABASE(application/config/database.txt)

$db['default']['hostname'] = 'localhost';$db['default']['username'] = 'root@localhost';$db['default']['password'] = '';$db['default']['database'] = 'boraignite';$db['default']['dbdriver'] = 'mysql';

Page 16: Analise frameworks php

Instalação YiiA instalação do Yii envolve principalmente, as duas etapas seguintes:

1. Fazer o Download do Yii Framework em yiiframework.com.2. Descompactar o arquivo do Yii em um diretório acessível a Web.3. Execute o yiic pela linha de comando, como no exemplo a seguir:

% YiiRoot/framework/yiic webapp apache/www/demo_yii

Page 17: Analise frameworks php

Diretórios Yii Parte I

demo_yii/ index.php Script de entrada da aplicação Web index-test.php Script de entrada para os testes funcionais assets/ Contém arquivos de recurso publicados css/ Contém arquivos CSS images/ Contém arquivos de imagem themes/ Contém temas da aplicação protected/ Contém arquivos protegidos da aplicação yiic Script de linha de comando yiic yiic.bat Script de linha de comando yiic para o Windows yiic.php Script PHP de linha de comando yiic commands/ Contém comandos 'yiic' customizados shell/ Contém comandos 'yiic shell' customizados components/ Contém componentes reutilizáveis do usuário Controller.php A classe padrão para todos os controles UserIdentity.php A classe 'UserIdentity' usada nas autenticações config/ Contém arquivos de configurações console.php Configuração da aplicação console main.php Configuração da aplicação Web text.php Configuração para os testes funcionais controllers/ Contém arquivos das classes de controle SiteController.php Classes de controle padrão

Page 18: Analise frameworks php

Diretórios Yii Parte II

data/ Contém exemplos de banco de dados schema.mysql.sql Esquemas de BD com o banco de amostra em MySQL schema.sqlite.sql Esquemas de BD com o banco de amostra em SQLite testdrive.db Arquivo do banco de dados de amostra do SQLite extensions/ Contém extensões de terceiros messages/ Contém mensagens traduzidas models/ Contém arquivos das classes de modelo LoginForm.php Modelo do formulário para a ação 'login' ContactForm.php Modelo do formulário para a ação 'contact' runtime/ Contém arquivos gerados temporariamente tests/ Contém scripts para os testes views/ Contém arquivos de visão dos controles e layouts layouts/ Contém arquivos de visão do layout main.php O layout padrão para todas as páginas column1.php O layout para páginas com coluna única column2.php O layout para páginas com duas colunas site/ Contém arquivos de visão para o controle 'site' pages/ Contém páginas "estática" about.php A visão para a página "about" contact.php Visão para a ação 'contact' error.php Visão para a ação 'error' (exibindo erros externos) index.php Visão para a ação 'index' login.php Visão para a ação 'login'

Page 19: Analise frameworks php

Instalação ZF 2cd apache/htdocs/www/

git clone git://github.com/zendframework/ZendSkeletonApplication.git

cd ZendSkeletonApplication

# php composer.phar self-update

# php composer.phar install

Ferramenta para gerenciamento de dependência em PHP. Ele permite que você declare as bibliotecas dependentes que seu projeto precisa e

ele irá instalar em seu projeto para você. O Composer tem como base as bibliotecas esse repositório: Packagist.

Page 20: Analise frameworks php

Diretórios ZF2Usa PHPUnit para testar o código e Travis CI como serviço de integração continua

O Zend Framework 2 não é compatível com o Zend Framework 1, na verdade ele é até parecido em alguns pontos na estrutura das pastas pois ambos são MVC.

A grande novidade é a pasta VENDOR que será utilizada para carregar as bibliotecas adicionais ou complementares (mais ou menos como funcionava a library antes).

Page 21: Analise frameworks php

Ferramentas e ComponentesZFToolFerramenta usada para facilitar a gerencia de projetos do Zend Framework.

Doctrine Fornece diversas bibliotecas com foco em persistência de dados.

Zend\PHPUnitComponente para teste unitário (TDD).

Zend\PaginatorComponente para paginação do sistema.

Zend\Authenticationcomponente fornece uma API para autenticação e inclui adaptadores concretos de autenticação para cenários de caso de uso comum

Zend\Authentication\ValidatorComponente de validação

Page 22: Analise frameworks php

IReportiReport é, designer de relatório de fonte aberta livre para JasperReports e JasperReports Server. criar layouts muito sofisticados, contendo gráficos,

imagens, sub-relatórios, tabelas cruzadas e muito mais. Acessar seus dados através de JDBC, TableModels, JavaBeans, XML, Hibernate, CSV, e fontes

personalizadas. Em seguida, publicar seus relatórios como PDF, RTF, XML, XLS, CSV, HTML, XHTML, textos, DOCX ou OpenOffice.

IReport Ciclo de Vida

Page 23: Analise frameworks php

PHP JasperXMLEste projeto (Na verdade, é uma classe), que converte o xml gerado pelo IReports para relatório web em php facilmente.

- Desenvolver relatório PDF com iReport, que é rápido, flexível e eficaz- Rodar nativamente em PHP- Integrar ao seu projeto existente facilmente- Você pode enviar qualquer parâmetro em seu relatório PDF / EXCEL facilmente, seja com GET ou POST- Código aberto, você pode alterar a biblioteca mesmo

Page 24: Analise frameworks php

Rankings e GráficosRankings e Gráficos

http://webrevisions.com/tutorials/php-framework-the-best-php-framework-for-2013/#.UcSLD_m1FPMhttp://www.phpframeworks.com/top-10-php-frameworks/http://socialcompare.com/en/comparison/php-frameworks-comparisonhttp://davidjconnelly.wordpress.com/2011/07/03/the-best-php-framework-of-2011/http://bharat-c-solanki.blogspot.com.br/2012/04/top-10-ranking-php-frameworks.htmlhttp://php.dzone.com/news/top-10-php-frameworkshttp://www.zfort.com/blog/top-5-php-frameworks-infographic/

- Google Trends ( Pesquisa de Interesse Mundial )

http://www.google.com/trends/explore#q=yii%2C%20CodeIgniter%2C%20Zend%20Framework&cmpt=

- Google Trends ( Pesquisa de Interesse Brasil )http://www.google.com/trends/explore#q=yii%2C%20CodeIgniter%2C%20Zend%20Framework&geo=BR&cmpt=q