Jaime Neto
contato@jaimeneto.com
 Tecnólogo em Telemática (CEFET-PB)
 Especialista em Desenvolvimento para Web (UNIBRATEC)
 Analista e desenvolvedor do
 Analista e desenvolvedor da Ponto-R Comunicação
 Trabalho com PHP desde 2004
 Trabalho com Zend Framework desde 2007
 Parte da equipe dos grupos PHP-PB e ZF-PB




                Conhecendo o Zend Framework - Jaime Neto
 Principais Framewoks PHP
 Sobre o Zend Framework
 Quem usa
 Componentes
 Estrutura da aplicação (sugestão)
 O que mais o ZF me oferece?
 Exemplos
 E o ZF2?
 Veja também...
 Perguntas

               Conhecendo o Zend Framework - Jaime Neto
Conhecendo o Zend Framework - Jaime Neto
Os 7 Frameworks PHP mais populares em 2011



                                                  Zend Framework
                                                  CodeIgniter
                                                  Symfony
                                                  Yii
                                                  Kohana
                                                  Prado
                                                  CackePHP

                                           Fonte: php-developer.org



       Conhecendo o Zend Framework - Jaime Neto
 Desenvolvido pela Zend Technologies




              Conhecendo o Zend Framework - Jaime Neto
 Lançamento:
   Versão 1.0 - Junho de 2007
   Versão 2.0 - Setembro de 2012
 Código aberto (New BSD License)
 Requer PHPUnit 3.3.0 para testes unitários
 Últimas versões:
   Versão 1.12 - requer PHP 5.1.4+ (recomenda-se 5.2.4+)
   Versão atual: 2.0.4 - requer PHP 5.3+
 Versão cobrada na prova de certificação: 1.5.3
 http://zendframework.com


                  Conhecendo o Zend Framework - Jaime Neto
 Totalmente orientado a objetos
 Utiliza bastante padrões de projeto (design patterns)
 Fracamente acoplado (“Preferir plugar a herdar”)
 Não impõe regras de desenvolvimento ou estrutura
 Pode ser usado como uma biblioteca de classes
 Enorme variedade de componentes
 Utiliza reescrita de url por padrão
 Comunidade enorme
 Curva de aprendizado lenta



                  Conhecendo o Zend Framework - Jaime Neto
Conhecendo o Zend Framework - Jaime Neto
Conhecendo o Zend Framework - Jaime Neto
 Aplicação
   Configurações
   Regras de negócio (Model)
      Acesso ao banco de dados
   Estruturas de controle (Controller)
   Arquivos de template (View)
   Formulários
 Documentação
 Bibliotecas
 Arquivos de acesso público
   Imagens
   Folhas de estilo
   Javascript
 Casos de teste

              PHP Robusto com Zend Framework - Jaime Neto
 Zend_Tool
     RAD e Tooling
     Rapidez para montar a estrutura do projeto
     Nada de manipular a árvore de diretórios
     Via linha de comando

 Zend_Db
   Zend_Db_Table
      Utiliza o padrão Table Data Gateway
      Rapidez para criar classes de acesso ao Banco de dados
      Não é preciso definir todos os atributos da tabela nas classes
   Zend_Db_Select
      Praticidade na criação de consultas de consultas SQL




                     Conhecendo o Zend Framework - Jaime Neto
 Zend_Config
   Facilidade na criação de arquivos de configuração
        INI
        XML
        JSON
        YAML
        PHP (Array)

 Zend_Form
   Facilidade na criação e manutenção de formulários
      Elements
      Filters
      Validators
      Decorators
      Sub-forms


                       Conhecendo o Zend Framework - Jaime Neto
 Zend_Navigation
   Praticidade na criação de menús e breadcrumbs


 Zend_Route
   Criação de rotas alternativas
      Exemplo: /titulo-do-post em vez de /postagens/exibir/id/1


 Zend_Log
   Guardar os logs de acesso em:
      Arquivo
      Banco de dados
      Mock (Array)


                   Conhecendo o Zend Framework - Jaime Neto
 Zend_Paginator
   Criar paginação para listagens de forma prática


 Zend_Search_Lucene
   Inserir busca por conteúdo


 Zend_Cache
   Melhorar a performance do sistema
      File
      Memcached
      APC

                  Conhecendo o Zend Framework - Jaime Neto
 Zend_Feed
   Criar página de RSS

 Zend_Test
   Criar testes unitários para a aplicação, junto ao PHPUnit

 Zend_Acl
   Definir permissões para os recursos da aplicação para
    diferentes tipos de usuários
      Role
      Resource
      Privilege


 E muito mais...

                    Conhecendo o Zend Framework - Jaime Neto
Classe de
                                                                       acesso ao banco
                                                                          de dados
<?php


class Application_Model_DbTable_Usuario extends Zend_Db_Table_Abstract
{
    protected $_name = 'usuario';
    protected $_primary = 'id';
}




                            Conhecendo o Zend Framework - Jaime Neto
class PostagensController extends Zend_Controller_Action
{
    /* Outros métodos do controlador */
    public function comentarAction()
    {
        $form = new Application_Form_Comentario();
        $form->setAction('postagens/comentar’);
        $this->view->form = $form;
    }
}


application/views/scripts/postagens/comentar.phtml
<div>Escreva um comentário</div>
<?php echo $this->form ?>



                            Conhecendo o Zend Framework - Jaime Neto
 O que mudou?
   Baseado no PHP versão 5.3
   Performance melhorada
   Uma camada MVC dirigida por eventos totalmente reescrita
   EventManager, para sistemas controlados por eventos
   Novo sistema de gerenciamento de módulos
   Uma nova camada de visão, para responder de forma
    adequada de acordo com o tipo de requisição
    (HTML, JSON, etc)
   Suporte a injeção de dependência (Dependency Injection)
   Namespaces



                 Conhecendo o Zend Framework - Jaime Neto
 Só pra ter uma idéia...                                         Namespaces
                                                                    no ZF2
namespace ExemploController;

use ZendMvcControllerActionController,
     ZendViewModelViewModel;

// Antes era Exemplo_HelloController extends Zend_Controller_Action_Abstract
class HelloController extends ActionController {
   public function worldAction() {
     $message = $this->getRequest()->query()->get('message', 'foo');
     return new ViewModel(array('message' => $message));
   }
}




                       Conhecendo o Zend Framework - Jaime Neto
 Motivos                                                      SIM
   A versão 2.0 é muito recente
   Suporte, fóruns e informações para dúvidas em geral ainda é escassa
      para ZF2, e muito extensa para ZF1
     Muitas empresas ainda trabalham com ZF1
     Existem poucas aplicações atualmente com ZF2
     É pouco provável que aplicações feitas em ZF1 migrem para ZF2 tão
      cedo
     Ainda existe grande necessidade de profissionais que trabalham
      com ZF1 no mercado
     Ainda não existe prova de certificação para o ZF2




                    Conhecendo o Zend Framework - Jaime Neto
 Versão cobrada:
   1.5.3
 Tópicos para estudar:
   http://www.zend.com/services/certification/framework/

 Onde fazer a prova:
   http://www.pearsonvue.com/vtclocator/
   Em João Pessoa: Faculdade iDEZ




                  Conhecendo o Zend Framework - Jaime Neto
 zendframework.com/manual                                    Links úteis
 zend-framework-examples.blogspot.com.br
 forum.imasters.com.br/topic/220186-zend-framework
 blog.giovannicandido.com/category/php/zend-framework
 akrabat.com


 php-pb.net/sua-escolha




 blog.jaimeneto.com/category/zend-framework
 https://github.com/jaimeneto




                   Conhecendo o Zend Framework - Jaime Neto
Perguntas?
    Jaime Neto
contato@jaimeneto.com
      @jaimecpn



          Conhecendo o Zend Framework - Jaime Neto

Conhecendo o Zend Framework

  • 1.
  • 2.
     Tecnólogo emTelemática (CEFET-PB)  Especialista em Desenvolvimento para Web (UNIBRATEC)  Analista e desenvolvedor do  Analista e desenvolvedor da Ponto-R Comunicação  Trabalho com PHP desde 2004  Trabalho com Zend Framework desde 2007  Parte da equipe dos grupos PHP-PB e ZF-PB Conhecendo o Zend Framework - Jaime Neto
  • 3.
     Principais FramewoksPHP  Sobre o Zend Framework  Quem usa  Componentes  Estrutura da aplicação (sugestão)  O que mais o ZF me oferece?  Exemplos  E o ZF2?  Veja também...  Perguntas Conhecendo o Zend Framework - Jaime Neto
  • 4.
    Conhecendo o ZendFramework - Jaime Neto
  • 5.
    Os 7 FrameworksPHP mais populares em 2011 Zend Framework CodeIgniter Symfony Yii Kohana Prado CackePHP Fonte: php-developer.org Conhecendo o Zend Framework - Jaime Neto
  • 6.
     Desenvolvido pelaZend Technologies Conhecendo o Zend Framework - Jaime Neto
  • 7.
     Lançamento:  Versão 1.0 - Junho de 2007  Versão 2.0 - Setembro de 2012  Código aberto (New BSD License)  Requer PHPUnit 3.3.0 para testes unitários  Últimas versões:  Versão 1.12 - requer PHP 5.1.4+ (recomenda-se 5.2.4+)  Versão atual: 2.0.4 - requer PHP 5.3+  Versão cobrada na prova de certificação: 1.5.3  http://zendframework.com Conhecendo o Zend Framework - Jaime Neto
  • 8.
     Totalmente orientadoa objetos  Utiliza bastante padrões de projeto (design patterns)  Fracamente acoplado (“Preferir plugar a herdar”)  Não impõe regras de desenvolvimento ou estrutura  Pode ser usado como uma biblioteca de classes  Enorme variedade de componentes  Utiliza reescrita de url por padrão  Comunidade enorme  Curva de aprendizado lenta Conhecendo o Zend Framework - Jaime Neto
  • 9.
    Conhecendo o ZendFramework - Jaime Neto
  • 10.
    Conhecendo o ZendFramework - Jaime Neto
  • 11.
     Aplicação  Configurações  Regras de negócio (Model)  Acesso ao banco de dados  Estruturas de controle (Controller)  Arquivos de template (View)  Formulários  Documentação  Bibliotecas  Arquivos de acesso público  Imagens  Folhas de estilo  Javascript  Casos de teste PHP Robusto com Zend Framework - Jaime Neto
  • 12.
     Zend_Tool  RAD e Tooling  Rapidez para montar a estrutura do projeto  Nada de manipular a árvore de diretórios  Via linha de comando  Zend_Db  Zend_Db_Table  Utiliza o padrão Table Data Gateway  Rapidez para criar classes de acesso ao Banco de dados  Não é preciso definir todos os atributos da tabela nas classes  Zend_Db_Select  Praticidade na criação de consultas de consultas SQL Conhecendo o Zend Framework - Jaime Neto
  • 13.
     Zend_Config  Facilidade na criação de arquivos de configuração  INI  XML  JSON  YAML  PHP (Array)  Zend_Form  Facilidade na criação e manutenção de formulários  Elements  Filters  Validators  Decorators  Sub-forms Conhecendo o Zend Framework - Jaime Neto
  • 14.
     Zend_Navigation  Praticidade na criação de menús e breadcrumbs  Zend_Route  Criação de rotas alternativas  Exemplo: /titulo-do-post em vez de /postagens/exibir/id/1  Zend_Log  Guardar os logs de acesso em:  Arquivo  Banco de dados  Mock (Array) Conhecendo o Zend Framework - Jaime Neto
  • 15.
     Zend_Paginator  Criar paginação para listagens de forma prática  Zend_Search_Lucene  Inserir busca por conteúdo  Zend_Cache  Melhorar a performance do sistema  File  Memcached  APC Conhecendo o Zend Framework - Jaime Neto
  • 16.
     Zend_Feed  Criar página de RSS  Zend_Test  Criar testes unitários para a aplicação, junto ao PHPUnit  Zend_Acl  Definir permissões para os recursos da aplicação para diferentes tipos de usuários  Role  Resource  Privilege  E muito mais... Conhecendo o Zend Framework - Jaime Neto
  • 17.
    Classe de acesso ao banco de dados <?php class Application_Model_DbTable_Usuario extends Zend_Db_Table_Abstract { protected $_name = 'usuario'; protected $_primary = 'id'; } Conhecendo o Zend Framework - Jaime Neto
  • 18.
    class PostagensController extendsZend_Controller_Action { /* Outros métodos do controlador */ public function comentarAction() { $form = new Application_Form_Comentario(); $form->setAction('postagens/comentar’); $this->view->form = $form; } } application/views/scripts/postagens/comentar.phtml <div>Escreva um comentário</div> <?php echo $this->form ?> Conhecendo o Zend Framework - Jaime Neto
  • 19.
     O quemudou?  Baseado no PHP versão 5.3  Performance melhorada  Uma camada MVC dirigida por eventos totalmente reescrita  EventManager, para sistemas controlados por eventos  Novo sistema de gerenciamento de módulos  Uma nova camada de visão, para responder de forma adequada de acordo com o tipo de requisição (HTML, JSON, etc)  Suporte a injeção de dependência (Dependency Injection)  Namespaces Conhecendo o Zend Framework - Jaime Neto
  • 20.
     Só prater uma idéia... Namespaces no ZF2 namespace ExemploController; use ZendMvcControllerActionController, ZendViewModelViewModel; // Antes era Exemplo_HelloController extends Zend_Controller_Action_Abstract class HelloController extends ActionController { public function worldAction() { $message = $this->getRequest()->query()->get('message', 'foo'); return new ViewModel(array('message' => $message)); } } Conhecendo o Zend Framework - Jaime Neto
  • 21.
     Motivos SIM  A versão 2.0 é muito recente  Suporte, fóruns e informações para dúvidas em geral ainda é escassa para ZF2, e muito extensa para ZF1  Muitas empresas ainda trabalham com ZF1  Existem poucas aplicações atualmente com ZF2  É pouco provável que aplicações feitas em ZF1 migrem para ZF2 tão cedo  Ainda existe grande necessidade de profissionais que trabalham com ZF1 no mercado  Ainda não existe prova de certificação para o ZF2 Conhecendo o Zend Framework - Jaime Neto
  • 22.
     Versão cobrada:  1.5.3  Tópicos para estudar:  http://www.zend.com/services/certification/framework/  Onde fazer a prova:  http://www.pearsonvue.com/vtclocator/  Em João Pessoa: Faculdade iDEZ Conhecendo o Zend Framework - Jaime Neto
  • 23.
     zendframework.com/manual Links úteis  zend-framework-examples.blogspot.com.br  forum.imasters.com.br/topic/220186-zend-framework  blog.giovannicandido.com/category/php/zend-framework  akrabat.com  php-pb.net/sua-escolha  blog.jaimeneto.com/category/zend-framework  https://github.com/jaimeneto Conhecendo o Zend Framework - Jaime Neto
  • 24.
    Perguntas? Jaime Neto contato@jaimeneto.com @jaimecpn Conhecendo o Zend Framework - Jaime Neto