SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante a 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
 

Semelhante a 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” );