SlideShare a Scribd company logo
1 of 28
Estrutura do Projeto: Amim Knabben < [email_address] > Rafael Bozzetti <rafael@thesource.com.br>
Tópicos ,[object Object]
Zend Framework
Estrutura de arquivos do SNEP
Bootstrapping & Configuração
MVC & Forms
Bibliotecas de Apoio
Histórico - Snep ,[object Object]
A partir da versão  1.3.0  o ambiente Zend foi introduzido gradualmente no projeto.
A série  1.3.x  convive com dois ambientes, o legado PHP e a nova estrutura Zend.
A série  1.4  foi totalmente reescrita utilizando o Zend Framework.
ZF – Introdução ,[object Object]
Visa a padronização e a reutilização de código.
É um padrão da indústria.
Possui parceiros tecnológicos como: IBM, Google e Microsoft.
Licença New BSD.
Versão estável: 1.11.3
Estrutura de Arquivos ,[object Object]
`-- scripts
Zend_Application ,[object Object]
A configuração da estrutura do projeto é realizada no arquivo  application.ini , e a interna do SNEP em  /includes/setup.conf .
Ao final, o Zend_Application despacha a requisição para o Front Controller através do método run().
Diagrama de Sequência do Bootstrap
Application.ini ,[object Object]
[production] resources.frontController.params.displayExceptions = 1 resources.frontController.controllerDirectory = APPLICATION_PATH &quot;/modules/default/controllers&quot; resources.frontController.moduleDirectory = APPLICATION_PATH &quot;/modules&quot; resources.layout.layoutPath = APPLICATION_PATH &quot;/modules/default/views/layouts&quot;
/includes/setup.conf ,[object Object]
Pode ser lido pelo Zend_Registry::( 'config' )
O arquivo é lido com  Zend_Config_Ini  e armazenado no Registry. $config  = Zend_Registry::get( 'config' ); echo   $config -> system -> path -> base

More Related Content

What's hot

Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Sérgio Lima
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Thyago Maia
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Curso de Introdução - PHP Zend Framework
Curso de Introdução - PHP Zend FrameworkCurso de Introdução - PHP Zend Framework
Curso de Introdução - PHP Zend FrameworkEvandro Klimpel Balmant
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoIvan Rosolen
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Thyago Maia
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2Thyago Maia
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1Thyago Maia
 
Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2Thyago Maia
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsEduardo Mendes
 

What's hot (19)

Tag Libraries e JSTL
Tag Libraries e JSTLTag Libraries e JSTL
Tag Libraries e JSTL
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7
 
Java 08
Java 08Java 08
Java 08
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Curso de Introdução - PHP Zend Framework
Curso de Introdução - PHP Zend FrameworkCurso de Introdução - PHP Zend Framework
Curso de Introdução - PHP Zend Framework
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
 
Plugin zend acl
Plugin zend aclPlugin zend acl
Plugin zend acl
 
Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2
 
Php 05 Mvc
Php 05 MvcPhp 05 Mvc
Php 05 Mvc
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
 
JSP com tags padrão
JSP com tags padrãoJSP com tags padrão
JSP com tags padrão
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
Slides
SlidesSlides
Slides
 
jsp-intro
jsp-introjsp-intro
jsp-intro
 

Viewers also liked

ULTRASMS - Principais Funcionalidades
ULTRASMS - Principais FuncionalidadesULTRASMS - Principais Funcionalidades
ULTRASMS - Principais Funcionalidadesrafaelbozzetti
 
1 Forum de SL de Duque de Caxias
1 Forum de SL de Duque de Caxias1 Forum de SL de Duque de Caxias
1 Forum de SL de Duque de CaxiasPaulino Michelazzo
 
Como vender e ganhar dinheiro com software livre
Como vender e ganhar dinheiro com software livreComo vender e ganhar dinheiro com software livre
Como vender e ganhar dinheiro com software livrePaulino Michelazzo
 
Drupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos DesafiosDrupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos DesafiosPaulino Michelazzo
 
WordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé DeveloperWordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé DeveloperPaulino Michelazzo
 
Jive VoIP - Apresentação Comercial
Jive VoIP - Apresentação ComercialJive VoIP - Apresentação Comercial
Jive VoIP - Apresentação ComercialOten Tecnologia
 
Modelo de cronograma_de_suporte_e_manutencao_de_redes_e_servidores_linux
Modelo de cronograma_de_suporte_e_manutencao_de_redes_e_servidores_linuxModelo de cronograma_de_suporte_e_manutencao_de_redes_e_servidores_linux
Modelo de cronograma_de_suporte_e_manutencao_de_redes_e_servidores_linuxVideo Aulas Linux e Mikrotik
 

Viewers also liked (13)

Apresentação SNEP
Apresentação SNEPApresentação SNEP
Apresentação SNEP
 
ULTRASMS - Principais Funcionalidades
ULTRASMS - Principais FuncionalidadesULTRASMS - Principais Funcionalidades
ULTRASMS - Principais Funcionalidades
 
1 Forum de SL de Duque de Caxias
1 Forum de SL de Duque de Caxias1 Forum de SL de Duque de Caxias
1 Forum de SL de Duque de Caxias
 
Intercon 2009
Intercon 2009Intercon 2009
Intercon 2009
 
Inquebrable Drupal
Inquebrable DrupalInquebrable Drupal
Inquebrable Drupal
 
Como vender e ganhar dinheiro com software livre
Como vender e ganhar dinheiro com software livreComo vender e ganhar dinheiro com software livre
Como vender e ganhar dinheiro com software livre
 
Drupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos DesafiosDrupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos Desafios
 
WordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé DeveloperWordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé Developer
 
Intercon 2011
Intercon 2011Intercon 2011
Intercon 2011
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Jive VoIP - Apresentação Comercial
Jive VoIP - Apresentação ComercialJive VoIP - Apresentação Comercial
Jive VoIP - Apresentação Comercial
 
Modelo de cronograma_de_suporte_e_manutencao_de_redes_e_servidores_linux
Modelo de cronograma_de_suporte_e_manutencao_de_redes_e_servidores_linuxModelo de cronograma_de_suporte_e_manutencao_de_redes_e_servidores_linux
Modelo de cronograma_de_suporte_e_manutencao_de_redes_e_servidores_linux
 
Tecnologia VoIP com Snep
Tecnologia VoIP com SnepTecnologia VoIP com Snep
Tecnologia VoIP com Snep
 

Similar to Estrutura ZF do SNEP

ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoMarcos Bezerra
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da ZendDomingos Teruel
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaEduardo Bregaida
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!Alefe Variani
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend frameworkMarcos Oliveira
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraDavid O'Keefe
 

Similar to Estrutura ZF do SNEP (20)

ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. Introdução
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Palestra
PalestraPalestra
Palestra
 
Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend framework
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
 
Apache Struts
Apache StrutsApache Struts
Apache Struts
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
 

Estrutura ZF do SNEP

  • 1. Estrutura do Projeto: Amim Knabben < [email_address] > Rafael Bozzetti <rafael@thesource.com.br>
  • 2.
  • 8.
  • 9. A partir da versão 1.3.0 o ambiente Zend foi introduzido gradualmente no projeto.
  • 10. A série 1.3.x convive com dois ambientes, o legado PHP e a nova estrutura Zend.
  • 11. A série 1.4 foi totalmente reescrita utilizando o Zend Framework.
  • 12.
  • 13. Visa a padronização e a reutilização de código.
  • 14. É um padrão da indústria.
  • 15. Possui parceiros tecnológicos como: IBM, Google e Microsoft.
  • 18.
  • 20.
  • 21. A configuração da estrutura do projeto é realizada no arquivo application.ini , e a interna do SNEP em /includes/setup.conf .
  • 22. Ao final, o Zend_Application despacha a requisição para o Front Controller através do método run().
  • 23. Diagrama de Sequência do Bootstrap
  • 24.
  • 25. [production] resources.frontController.params.displayExceptions = 1 resources.frontController.controllerDirectory = APPLICATION_PATH &quot;/modules/default/controllers&quot; resources.frontController.moduleDirectory = APPLICATION_PATH &quot;/modules&quot; resources.layout.layoutPath = APPLICATION_PATH &quot;/modules/default/views/layouts&quot;
  • 26.
  • 27. Pode ser lido pelo Zend_Registry::( 'config' )
  • 28. O arquivo é lido com Zend_Config_Ini e armazenado no Registry. $config = Zend_Registry::get( 'config' ); echo $config -> system -> path -> base
  • 29.
  • 30. Divide de forma organizada as categorias de: Apresentação, Lógica de Negócio e Acesso de Dados do projeto.
  • 31.
  • 32. Atualmente utilizamos a biblioteca PHP-AGI juntamente com uma camada de abstração para facilitar o acesso do Zend a mesma.
  • 33.
  • 34. São classes que manipulam as entidades através de rotinas para acesso aos dados e alguma lógica de negócio. /lib/Snep/ /lib/PBX/ /lib/Zend Acl.php Trunks.php Auth.php Alerts.php Interfaces.php Auth/Result.php Billing/Manager.php Rule.php Db.php Carrier/Manager.php Rule/Action.php Db/Select.php ... ... ...
  • 35.
  • 36. O SNEP mantêm uma instância da classe Zend_Db no Zend_Registry, permitindo que seja recuperada e utilizada em qualquer ponto da aplicação.
  • 37. Permite que qualquer tipo de consulta ou manipulação do banco de dados seja feita utilizando o padrão de desenho Table Data Gateway .
  • 38. Zend_Db // Instância do registro db $db = Zend_Registry::get( “db” ); $select = $db ->select() ->from( “peers” ) ->where( “name != 'admin'” ) ->order( “id” ); $stmt = $db ->query( $select ); $resultado = $stmt ->fetchAll( );
  • 39.
  • 40. system_data.sql – Contém os dados iniciais do banco.
  • 41. cnl_data.sql – Contém os dados de localização de chamadas.
  • 42.
  • 43. A atualização do banco de dados deve ser gradual, versão a versão. install/update/ ├── 1.1.0 │   └── database.sql ├── 1.1.3 │   └── database.sql ├── 1.1.6 │   └── database.sql ├── 1.2.0 │   └── database.sql ├── 1.3.0 │   └── database.sql ├── 1.3.1 │   └── database.sql └── 1.3.2 └── database.sql
  • 44.
  • 45. Uma classe de controlador deve estender a classe Zend_Controller_Action .
  • 46. O método indexAction() é necessário sendo este a ação padrão do Zend.
  • 47. Cada método terá a uma ou mais Views .
  • 48. Um controlador e seus métodos definem as URL's da aplicação.
  • 49. Controllers // Definição de uma classe de controlador // Deve informar o módulo e ter um nome class Agents Controller extends Zend_Controller_Action { // Métodos de ação da Classe public function index Action() { } public function add Action() { } public function remove Action() { } public function edit Action() { } }
  • 50. Controllers A estrutura do Controlador e seus métodos definem a URL da aplicação. $base_url = http://localhost/snep/index.php/ agents / index / indexAction() agents / add / addAction() agents / remove / removeAction() agents / edit / editAction()
  • 51.
  • 52. No Snep utilizamos PHP , HTML e Javascript .
  • 53. São divididas em pastas com o nome do controlador e um arquivo de template .phtml para cada método.
  • 55. Views
  • 56.
  • 57. Cada form é definido em XML seguindo um padrão.
  • 58. Define tipo e validação do elementos do formulário. $xml = new Zend_Config_Xml( &quot;./default/forms/example.xml&quot; )
  • 59. $form = new Snep_Form( $xml );
  • 60. $this -> view -> form = $form ;
  • 61. Forms <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <form> <elements> <nome> <type>text</type> <options> <label> Nome </label> <required> true </required> </options> </nome> <id> <type> hidden </type> </id> </elements> </form>
  • 62.
  • 63. O método isValid () é responsável por validar os dados do formulário.
  • 64. $isValid = $form -> isValid ( $_POST ); if ( $isValid ) { echo “Form Válido!” ; } else { echo “Form Inválido!” ; }
  • 65.
  • 66. Esse mecanismo substitui o uso de variáveis globais. register_globals = Off. // Armazenando um objeto no Zend_Registry Zend_Registry::set( 'index' , $value ); // Armazenando um objeto no Zend_Registry $value = Zend_Registry::get( 'index' );
  • 67.
  • 68. Toda e qualquer string deve ser definida com Zend_Translate(), desta forma ela torna-se dinâmica.
  • 69. Como o Zend_Translate é um atributo da View, seu uso é diferente na Visão, Controlador e Modelo.
  • 70. Zend_Translate // Uso na Visão echo $this ->translate( “Texto” ); // Uso no Controlador echo $this -> view ->translate( “Texto” ); // No Model deve-se recuperar a instancia. $i18n = Zend_Registry::get( 'i18n' ); $i18n ->translate( “Texto” );