Zend Framework




                 20/08/2012
Curriculum

     Flávio Gomes da Silva Lisboa
     Bacharel em Ciência da Computação com pós-graduação em Aplicações
     Corporativas usando Orientação a Objetos e Tecnologia Java pela
     Universidade Tecnológica Federal do Paraná. Já atuou como programador
     em empresas privadas de informática e funcionário de carreira do Banco
     do Brasil, onde chegou a analista na diretoria internacional. Atualmente é
     consultor tecnológico da Coordenação Estratégica de Tecnologia do
     Serviço Federal de Processamento de Dados (Serpro). Foi professor na
     pós-graduação da UNICID e é instrutor de cursos técnicos na Tempo Real
     Eventos e conteudista da TreinaWeb. Foi membro do time oficial de
     tradução do Zend Framework e autor de três livros sobre o tema. É
     contribuidor oficial do projeto Tine 2.0, suíte livre de comunicação em
     PHP. Tem experiência na área de Ciência da Computação, com ênfase
     em Software Livre, atuando principalmente nos seguintes temas: Java,
     PHP, Python, padrões, frameworks, MVC, DCI e objetos.




Zend Framework
Curriculum

     Flávio Gomes da Silva Lisboa




Zend Framework
Zend Framework
Zend Framework

O que é isso?




  Framework de aplicação web orientado a objetos,
  aberto, implementado em PHP 5 e licenciado sob
                New BSD License.
Zend Framework




/* História real enviada por Wagner */

Alonso: Cara… O que é “Orientado a objetos”?

Programador: É uma forma de programar que foi criada para tentar aproximar o mundo real do mundo virtual usando
propriedades, objetos, métodos, etc..

Alonso: Ahhhh tá… É que eu acho que faço orientado a objetos e nem sei…

FACEPALM
Zend Framework
Zend Framework

Características




➔Framework PHP 5 completamente aberto.
➔Muito fácil de usar.

➔Usa a regra 80:20 (80% das coisas que você

precisa estão lá).
➔Sem configurações complexas.
Zend Framework
Zend Framework

Características




➔Licença aberta BSD, como o PHP.
➔Mais de 150.000 linhas de código de alta

qualidade.
➔Mais de 65% cobertas com testes de unidade.

➔Grande comunidade.
Zend Framework
Zend Framework

Características




         Gerador de código integrado com IDEs
Zend Framework
Zend Framework

Características
  Facilmente integrável com frameworks Javascript




  ●Zend Framework já vem com Dojo
  ●Classes Zend_Dojo e ZendX_JQuery
Zend Framework
Zend Framework

Usuários
Zend Framework
Zend Framework

Números

➔ Mais de 10 milhões de downloads
➔ Mais de 500 contribuidores

➔ Mais de 1000 páginas no Guia de Referência

➔ Mais de 500 exemplos no Guia de Referência

➔ Mais de 6 mihões de hits no Google

➔ Mais de 120 projetos baseados, estendendo ou

suportando Zend Framework no SourceForge
➔ Mais de 280 projetos baseados, estendendo, ou

suportando Zend Framework no Google Code
➔ Mais de 4000 relatos resolvidos no Issue Tracker
Ele usa a estrutura MVC
Zend Framework
Ele usa a estrutura MVC
Zend Framework
Ele usa a estrutura MVC
Zend Framework

Modelo




A representação específica do domínio        da
informação sobre a qual a aplicação opera.
Ele usa a estrutura MVC
Zend Framework
Ele usa a estrutura MVC
Zend Framework

Visão/Visualizador




Renderiza o modelo dentro de uma forma adequada
    para interação, tipicamente um elemento da
 interface com o usuário. Múltiplas visões podem
   existir para um único modelo para diferentes
                     propósitos.
Ele usa a estrutura MVC
Zend Framework
Ele usa a estrutura MVC
Zend Framework

Controlador




Processa e responde a eventos, tipicamente ações do
usuário, e pode provocar mudanças no modelo.
O QUE TEM NO
Zend Framework


        ZEND
    FRAMEWORK?
Zend Framework
Zend Framework
O que tem no Zend Framework
Zend Framework

Ferramentas na caixa

➔MVC usando Zend_Controller, Zend_View,
Zend_Layout and Zend_Form.
➔Acesso a Banco de dados usando

Zend_Db_Adapter(s) e classes como
Zend_Db_Table, Zend_Db_Select
➔Autenticação e controle de acesso com

Zend_Auth, Zend_Session e Zend_Acl.
➔i18n e l10n com Zend_Locate, Zend_Date,

Zend_Measure e Zend_Translate.
O que tem no Zend Framework
Zend Framework

… e muito mais

➔Web services com Zend_Http_Client,
Zend_Rest_Client, Zend_Feed, Zend_Service_... e
mais.
➔Comunicação para criação de documentos com

Zend_Pdf ou e-mails com Zend_Mail, Zend_Mime.
➔Busca com a implementação de

Zend_Search_Lucene.
➔Utilitários como Zend_Cache, Zend_Config,

Zend_Console_Getopt, Zend_Filter, ...
Layout da aplicação
Zend Framework
Layout da aplicação
Zend Framework

Layout padrão de URL




➔/index/index
➔/processo/incluir

➔/processo/buscar/juiz/dredd

➔Baseado em /controller/action/params
Layout da aplicação
Zend Framework

Exemplo de URL




http://www.apatada.com/blogs/artigo/id/al465wq
➔Controlador: blogs

➔Ação: artigo

➔Parâmetro: id
Layout da aplicação
Zend Framework

Estrutura de diretórios
Layout da aplicação
Zend Framework

Estrutura de diretórios



/application
➔/controllers diretório com os controladores

➔/layouts layouts padrões para a aplicação

➔/views/.. conteúdo e layout específico do

controlador
➔/models seus modelos de dados

➔Bootstrap.php tarefas de inicialização
Layout da aplicação
Zend Framework

Bootstrap.php

<?php

class Bootstrap extends
Zend_Application_Bootstrap_Bootstrap
{
   public function _initLog()
   {
      $writer = new Zend_Log_Writer_Null();

        $log = new Zend_Log();

        Zend_Registry::set('log', $log);
    }
}
Layout da aplicação
Zend Framework

/public




➔/images imagens estáticas
➔/styles folhas de estilo

➔/scripts/ javascript estático

➔/.htaccess configuração do Apache/PHP

➔index.php
Layout da aplicação
Zend Framework

.htaccess


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s
[OR]
RewriteCond %{REQUEST_FILENAME} -l
[OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Layout da aplicação
    Zend Framework

    index.php
<?php

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') :
'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();
Demonstração!!!
Zend Framework
Código
Zend Framework

index.php
Razões para usar Zend Framework
Zend Framework
1. Você pode estender classes
como se não houvesse amanhã
Razões para usar Zend Framework
Zend Framework

2. Orientação a objetos de verdade
Razões para usar Zend Framework
Zend Framework
3. Use o que você precisa, esqueça
o resto
Razões para usar Zend Framework
Zend Framework
4. Ele deixa você fazer muitas
coisas
Razões para usar Zend Framework
Zend Framework
5. Nenhuma implementação de modelo –
escolha sua própria aventura
Razões para usar Zend Framework
Zend Framework

6. Integre com o que você quiser
Razões para usar Zend Framework
Zend Framework

7. Existem diretrizes e padrões
Razões para usar Zend Framework
Zend Framework
8. Todo código é culpado até que se prove sua
inocência
Razões para usar Zend Framework
Zend Framework

9. Comunidade e Documentação
Razões para usar Zend Framework
Zend Framework

10. Certificação e suporte
No governo
Zend Framework

Ministério das Cidades




                 http://www.capacidades.gov.br
No governo
Zend Framework
Ministério do Desenvolvimento, Indústria e
Comércio Exterior
Desde 2007, utiliza


Tem dezenas de sistemas em produção.
No governo
Zend Framework




             http://www.comexbrasil.gov.br
No governo
Zend Framework




         http://www.vitrinedoexportador.gov.br
No governo
Zend Framework




                 http://www.portaldoempreendedor.gov.br
No governo
Zend Framework

Ministério da Educação




                 http://sisu.mec.gov.br
No governo
Zend Framework

Ministério da Educação




                  http://sisfies.mec.gov.br
No governo
Zend Framework

Ministério do Meio Ambiente




                 http://www.icmbio.gov.br/sial
No governo
  Zend Framework

   Ministério da Saúde




http://integrador.datasus.gov.br/INTEGRADOR/index.php?area=01
No governo
  Zend Framework

   Editais




Ministério da Defesa
EDITAL no 002/12–MOT/DEC, de 5 de julho de 2012

Ministério da Educação
TERMO DE REFERÊNCIA TOR/FNDE/DTI/MEC Nº 037/2012
No governo
Zend Framework

Serpro

             3
No governo
Zend Framework

Serpro
No governo
Zend Framework

Application Framework
No governo
Zend Framework

Service Oriented Architecture
No governo
Zend Framework




                 Contribuições à comunidade:

                 → e-mail
                 → webconference
                 → mensageria instantânea
No governo
Zend Framework




                     http://github.com/explivre
No governo
Zend Framework




Mais de 500 mil usuários do Expresso no Brasil
No governo
Zend Framework




Arquitetura de referência para aplicações PHP
No governo
Zend Framework




Modelo de reuso de componentes
No governo
Zend Framework

Referências
●   PETI Planejamento Estratégico de Tecnologia da
    Informação do MEC
●   http://www.slideshare.net/jwenl/zend-framework-
    introduction-presentation-763045
●   http://www.pluriverso.com.br/software/zend-
    framework
●   http://www.moodox.com.br/portfolio-nossos-
    trabalhos
Contato
Zend Framework

flavio.lisboa@serpro.gov.br
Coordenação Estratégica de Tecnologia
Serpro Regional Curitiba

Palestra Zend Framework CISL 2012 - ZF no Governo Federal

  • 2.
    Zend Framework 20/08/2012
  • 3.
    Curriculum Flávio Gomes da Silva Lisboa Bacharel em Ciência da Computação com pós-graduação em Aplicações Corporativas usando Orientação a Objetos e Tecnologia Java pela Universidade Tecnológica Federal do Paraná. Já atuou como programador em empresas privadas de informática e funcionário de carreira do Banco do Brasil, onde chegou a analista na diretoria internacional. Atualmente é consultor tecnológico da Coordenação Estratégica de Tecnologia do Serviço Federal de Processamento de Dados (Serpro). Foi professor na pós-graduação da UNICID e é instrutor de cursos técnicos na Tempo Real Eventos e conteudista da TreinaWeb. Foi membro do time oficial de tradução do Zend Framework e autor de três livros sobre o tema. É contribuidor oficial do projeto Tine 2.0, suíte livre de comunicação em PHP. Tem experiência na área de Ciência da Computação, com ênfase em Software Livre, atuando principalmente nos seguintes temas: Java, PHP, Python, padrões, frameworks, MVC, DCI e objetos. Zend Framework
  • 4.
    Curriculum Flávio Gomes da Silva Lisboa Zend Framework
  • 5.
    Zend Framework Zend Framework Oque é isso? Framework de aplicação web orientado a objetos, aberto, implementado em PHP 5 e licenciado sob New BSD License.
  • 6.
    Zend Framework /* Históriareal enviada por Wagner */ Alonso: Cara… O que é “Orientado a objetos”? Programador: É uma forma de programar que foi criada para tentar aproximar o mundo real do mundo virtual usando propriedades, objetos, métodos, etc.. Alonso: Ahhhh tá… É que eu acho que faço orientado a objetos e nem sei… FACEPALM
  • 7.
    Zend Framework Zend Framework Características ➔FrameworkPHP 5 completamente aberto. ➔Muito fácil de usar. ➔Usa a regra 80:20 (80% das coisas que você precisa estão lá). ➔Sem configurações complexas.
  • 8.
    Zend Framework Zend Framework Características ➔Licençaaberta BSD, como o PHP. ➔Mais de 150.000 linhas de código de alta qualidade. ➔Mais de 65% cobertas com testes de unidade. ➔Grande comunidade.
  • 9.
    Zend Framework Zend Framework Características Gerador de código integrado com IDEs
  • 10.
    Zend Framework Zend Framework Características Facilmente integrável com frameworks Javascript ●Zend Framework já vem com Dojo ●Classes Zend_Dojo e ZendX_JQuery
  • 11.
  • 12.
    Zend Framework Zend Framework Números ➔Mais de 10 milhões de downloads ➔ Mais de 500 contribuidores ➔ Mais de 1000 páginas no Guia de Referência ➔ Mais de 500 exemplos no Guia de Referência ➔ Mais de 6 mihões de hits no Google ➔ Mais de 120 projetos baseados, estendendo ou suportando Zend Framework no SourceForge ➔ Mais de 280 projetos baseados, estendendo, ou suportando Zend Framework no Google Code ➔ Mais de 4000 relatos resolvidos no Issue Tracker
  • 13.
    Ele usa aestrutura MVC Zend Framework
  • 14.
    Ele usa aestrutura MVC Zend Framework
  • 15.
    Ele usa aestrutura MVC Zend Framework Modelo A representação específica do domínio da informação sobre a qual a aplicação opera.
  • 16.
    Ele usa aestrutura MVC Zend Framework
  • 17.
    Ele usa aestrutura MVC Zend Framework Visão/Visualizador Renderiza o modelo dentro de uma forma adequada para interação, tipicamente um elemento da interface com o usuário. Múltiplas visões podem existir para um único modelo para diferentes propósitos.
  • 18.
    Ele usa aestrutura MVC Zend Framework
  • 19.
    Ele usa aestrutura MVC Zend Framework Controlador Processa e responde a eventos, tipicamente ações do usuário, e pode provocar mudanças no modelo.
  • 20.
    O QUE TEMNO Zend Framework ZEND FRAMEWORK?
  • 21.
  • 22.
  • 23.
    O que temno Zend Framework Zend Framework Ferramentas na caixa ➔MVC usando Zend_Controller, Zend_View, Zend_Layout and Zend_Form. ➔Acesso a Banco de dados usando Zend_Db_Adapter(s) e classes como Zend_Db_Table, Zend_Db_Select ➔Autenticação e controle de acesso com Zend_Auth, Zend_Session e Zend_Acl. ➔i18n e l10n com Zend_Locate, Zend_Date, Zend_Measure e Zend_Translate.
  • 24.
    O que temno Zend Framework Zend Framework … e muito mais ➔Web services com Zend_Http_Client, Zend_Rest_Client, Zend_Feed, Zend_Service_... e mais. ➔Comunicação para criação de documentos com Zend_Pdf ou e-mails com Zend_Mail, Zend_Mime. ➔Busca com a implementação de Zend_Search_Lucene. ➔Utilitários como Zend_Cache, Zend_Config, Zend_Console_Getopt, Zend_Filter, ...
  • 25.
  • 26.
    Layout da aplicação ZendFramework Layout padrão de URL ➔/index/index ➔/processo/incluir ➔/processo/buscar/juiz/dredd ➔Baseado em /controller/action/params
  • 27.
    Layout da aplicação ZendFramework Exemplo de URL http://www.apatada.com/blogs/artigo/id/al465wq ➔Controlador: blogs ➔Ação: artigo ➔Parâmetro: id
  • 28.
    Layout da aplicação ZendFramework Estrutura de diretórios
  • 29.
    Layout da aplicação ZendFramework Estrutura de diretórios /application ➔/controllers diretório com os controladores ➔/layouts layouts padrões para a aplicação ➔/views/.. conteúdo e layout específico do controlador ➔/models seus modelos de dados ➔Bootstrap.php tarefas de inicialização
  • 30.
    Layout da aplicação ZendFramework Bootstrap.php <?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { public function _initLog() { $writer = new Zend_Log_Writer_Null(); $log = new Zend_Log(); Zend_Registry::set('log', $log); } }
  • 31.
    Layout da aplicação ZendFramework /public ➔/images imagens estáticas ➔/styles folhas de estilo ➔/scripts/ javascript estático ➔/.htaccess configuração do Apache/PHP ➔index.php
  • 32.
    Layout da aplicação ZendFramework .htaccess RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
  • 33.
    Layout da aplicação Zend Framework index.php <?php // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), ))); /** Zend_Application */ require_once 'Zend/Application.php'; // Create application, bootstrap, and run $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
  • 34.
  • 35.
  • 36.
    Razões para usarZend Framework Zend Framework 1. Você pode estender classes como se não houvesse amanhã
  • 37.
    Razões para usarZend Framework Zend Framework 2. Orientação a objetos de verdade
  • 38.
    Razões para usarZend Framework Zend Framework 3. Use o que você precisa, esqueça o resto
  • 39.
    Razões para usarZend Framework Zend Framework 4. Ele deixa você fazer muitas coisas
  • 40.
    Razões para usarZend Framework Zend Framework 5. Nenhuma implementação de modelo – escolha sua própria aventura
  • 41.
    Razões para usarZend Framework Zend Framework 6. Integre com o que você quiser
  • 42.
    Razões para usarZend Framework Zend Framework 7. Existem diretrizes e padrões
  • 43.
    Razões para usarZend Framework Zend Framework 8. Todo código é culpado até que se prove sua inocência
  • 44.
    Razões para usarZend Framework Zend Framework 9. Comunidade e Documentação
  • 45.
    Razões para usarZend Framework Zend Framework 10. Certificação e suporte
  • 46.
    No governo Zend Framework Ministériodas Cidades http://www.capacidades.gov.br
  • 47.
    No governo Zend Framework Ministériodo Desenvolvimento, Indústria e Comércio Exterior Desde 2007, utiliza Tem dezenas de sistemas em produção.
  • 48.
    No governo Zend Framework http://www.comexbrasil.gov.br
  • 49.
    No governo Zend Framework http://www.vitrinedoexportador.gov.br
  • 50.
    No governo Zend Framework http://www.portaldoempreendedor.gov.br
  • 51.
    No governo Zend Framework Ministérioda Educação http://sisu.mec.gov.br
  • 52.
    No governo Zend Framework Ministérioda Educação http://sisfies.mec.gov.br
  • 53.
    No governo Zend Framework Ministériodo Meio Ambiente http://www.icmbio.gov.br/sial
  • 54.
    No governo Zend Framework Ministério da Saúde http://integrador.datasus.gov.br/INTEGRADOR/index.php?area=01
  • 55.
    No governo Zend Framework Editais Ministério da Defesa EDITAL no 002/12–MOT/DEC, de 5 de julho de 2012 Ministério da Educação TERMO DE REFERÊNCIA TOR/FNDE/DTI/MEC Nº 037/2012
  • 56.
  • 57.
  • 58.
  • 59.
    No governo Zend Framework ServiceOriented Architecture
  • 60.
    No governo Zend Framework Contribuições à comunidade: → e-mail → webconference → mensageria instantânea
  • 61.
    No governo Zend Framework http://github.com/explivre
  • 62.
    No governo Zend Framework Maisde 500 mil usuários do Expresso no Brasil
  • 63.
    No governo Zend Framework Arquiteturade referência para aplicações PHP
  • 64.
    No governo Zend Framework Modelode reuso de componentes
  • 65.
    No governo Zend Framework Referências ● PETI Planejamento Estratégico de Tecnologia da Informação do MEC ● http://www.slideshare.net/jwenl/zend-framework- introduction-presentation-763045 ● http://www.pluriverso.com.br/software/zend- framework ● http://www.moodox.com.br/portfolio-nossos- trabalhos
  • 66.