Analise frameworks php

2,033 views

Published on

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.

Published in: Technology

Analise frameworks php

  1. 1. Análise Frameworks PHP ZF2 CodeIgniter Yii
  2. 2. Visão geral ZEND FRAMEWORK 2 Melhores 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. CODEIGNITER CodeIgniter 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. YII Yii é 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.
  3. 3. Recursos Framework PHP5 MVC Multiple DB's ORM DB Objects Templates Caching Validation Ajax Auth Module Modules 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).
  4. 4. Comunidades ZEND Blogs dos contribuintes, lista de e-mail do participantes brasileiro no zend, disponibilidade de download da API, twitter, documentação no github. Comunidades brasileiras ativas. CI Fóruns, documentação e wiki no Github, chats. Comunidade Codeigniter Brasil, diversidade de blogs para suporte do framework, guia de desenvolvimento. Yii Comunidades 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.
  5. 5. Suporte a Bancos SQL/NO SQL ZEND Firebird, MariaDB, MySql, IMB DB2, Microsoft SQL Server, Oracle, PostgreSQL, SQLite. Conexão a múltiplos bancos NoSql Zend_Couch, Zend_Nosql_Mongo, suporte e documentado. CI Sqlite (Default), Mysql, PostgreSQL, Odbc. Conexão a múltiplos banco. Não a suporte para banco NOSQL. YII MySQL 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.
  6. 6. Aderência ao Bootstrap ZEND Zend Framework 2 , ja vem por padrão, pronto para uso. CI Projeto com o bootstrap, pronto para uso. https://github.com/sjlu/CodeIgniter-Bootstrap YII Extensão Yii-Bootstrap, com documentação devido a adaptação ao framework. http://www.yiiframework.com/extension/yii-bootstrap/
  7. 7. Desenvolvimento Facilidade 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. CI Uso 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. YII Padrã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.
  8. 8. Sites / Sistemas que utilizam ZEND BBC - 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/ CI Argo 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/ YII Stay - 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/
  9. 9. Suporte a HA utilizando sessão e/ou Banco ou FS Compartilhado Zend Suporte Multi-Server no Zend Server Alta disponibilidade e escalabilidade para aplicações PHP Quando 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 Availability Agrupamento 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 CI Não encontrei resposta coerente da parte do framework CodeIgniter. YII Não encontrei resposta coerente da parte do Yii Frameworks.
  10. 10. Diretórios e Instalação CI Gerar 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.txt application/config/database.txt
  11. 11. ROUTES 1) $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';
  12. 12. CONTROLLER 1) 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); } }
  13. 13. MODEL class 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 ?>
  14. 14. (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'); }
  15. 15. 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';
  16. 16. Instalação Yii A 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
  17. 17. 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
  18. 18. 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'
  19. 19. Instalação ZF 2 cd 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.
  20. 20. Diretórios ZF2 Usa 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).
  21. 21. Ferramentas e Componentes ZFTool Ferramenta usada para facilitar a gerencia de projetos do Zend Framework. Doctrine Fornece diversas bibliotecas com foco em persistência de dados. ZendPHPUnit Componente para teste unitário (TDD). ZendPaginator Componente para paginação do sistema. ZendAuthentication componente fornece uma API para autenticação e inclui adaptadores concretos de autenticação para cenários de caso de uso comum ZendAuthenticationValidator Componente de validação
  22. 22. IReport iReport é, 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
  23. 23. PHP JasperXML Este 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
  24. 24. Rankings e Gráficos Rankings e Gráficos http://webrevisions.com/tutorials/php-framework-the-best-php-framework-for-2013/#.UcSLD_m1FPM http://www.phpframeworks.com/top-10-php-frameworks/ http://socialcompare.com/en/comparison/php-frameworks-comparison http://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.html http://php.dzone.com/news/top-10-php-frameworks http://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

×