SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
Amim Knabben <amim@thesource.com.br>
Rafael Bozzetti <rafael@thesource.com.br>
Histórico - SNEP
   Escrito por Flávio Somensi, em PHP puro.
      Modelo mantido até a versão 1.2.2.

 Na versão 1.3.0 o ambiente Zend Framework
  começou a ser introduzido gradualmente.

   A série 1.3.x convive com dois ambientes.

A série 1.4.x foi totalmente reescrita utilizando o
                Zend Framework.
Como é distribuído.
 A versão ISO, vem com ambiente previamente
instalado e configurado. É baseado em Debian.
                 Só Série 1.3.x.

Código fonte disponibilizado no formato tar.gz,
     exige a configuração do ambiente.

     Pode ser obtido no repositório SVN.
Repositório SVN
    O Projeto é hospedado no Source Forge.

       O repositório TRUNK é a versão
    atual de desenvolvimento, não estável.

https://snep.svn.sourceforge.net/svnroot/snep/trunk/

       Os repositórios TAGS são versões
             fechadas e estáveis.

https://snep.svn.sourceforge.net/svnroot/snep/tags/
Versão de Desenvolvimento
    Para obter do projeto é necessário o
            Subversion (SVN).


      A estrutura pode ser atualizada
            quando necessário.

https://snep.svn.sourceforge.net/
        svnroot/snep/trunk/
Download do Código

   http://192.168.0.14/dev/

    Disponibilizamos o código fonte do
    SNEP 1.4 para acompanhamento.
         Baixe-o e Descompacte.
tar xvf snep-1.4.tar.gz -C /var/www/
O Arquivo de Configuração


     includes/setup.conf

  Parametriza dados de configuração
         do ambiente SNEP
Configuração do Apache


      /install/snep.apache
Arquivo previamente configurado que define a
      configuração no Apache do SNEP

  Copiar para /etc/apache/sites-enabled/

      É baseado no ambiente Debian.

   Necessita que o serviço seja reiniciado.
Banco de Dados
A estrutura do banco e os dados iniciais do
  SNEP estão na pasta default/installer/


schema.sql             Estrutura de tabelas.



system_data.sql        Dados iniciais do SNEP.



cnl-data.sql           Dados para localização de
                       chamadas.
Atualização de Banco
                             install / update /
●   As atualizações do       ├── 1.1.0
    banco são versionadas    │ └── database.sql
    e encontram-se na        ├── 1.1.3
    pasta install/update/.   │ └── database.sql
                             ├── 1.1.6
                             │ └── database.sql
                             ├── 1.2.0
●   A atualização do banco   │ └── database.sql
    de dados deve ser        ├── 1.3.0
    gradual, versão a        │ └── database.sql
                             ├── 1.3.1
    versão.                  │ └── database.sql
                             └── 1.3.2
                               └── database.sql
/etc/asterisk

 O SNEP possui sua própria estrutura de
     configuração para o Asterisk.

Os arquivos de configuração do SNEP são
       incluídos pelos do Asterisk.

Não devem ser manipulados manualmente.

     Estão em install/etc/asterisk/
AGI's

   O Asterisk delega o roteamento de
           ligações ao SNEP.

    Isso é feito por intermédio do AGI.

Deve ser criado um link simbólico chamado
      /var/lib/asterisk/agi-bin/snep

  Os Agi's do SNEP estão na pasta /agi/
Arquivos de Som

As rotinas do SNEP precisam de acesso aos
        arquivos de som do Asterisk.

    São os arquivos de áudio padrão e
         as músicas em espera.

Essa integração é feita por links simbólicos
        criados na pasta /sounds/

  pt_BR - /var/lib/asterisk/sounds/pt_BR
       moh - /var/lib/asterisk/moh
Unixodbc

O acesso do Asterisk ao banco de dados é feito por
            intermédio do Unixodbc.

   O SNEP também disponibiliza os arquivos de
    referência para a configuração do mesmo.

   Esta referência diz respeito ao res_odbc.conf

             Estão na pasta install/etc/

          São unixodbc.ini e odbcinst.ini
Hands On
●   Estrutura de Arquivos
●   setup.conf
●   Apache.
●   Banco de dados.
●   Arquivos /etc/asterisk/
●   Integração AGI
●   Arquivos de Som
●   Unixodbc
Snep arquitetura
Estrutura do Projeto

   Interface do Usuário ( web )
    Manipula Dados no Banco de Dados
    Manipula Arquivos de Configuração
      Interage com Asterisk via AMI.




   Interface com Asterisk ( agi )
Asterisk delega a Lógica de ligações ao SNEP
            Por intermédio do AGI
Padrão - MVC
O MVC é um padrão de arquitetura que o SNEP
 segue, é utilizado para construir as rotinas da
                   aplicação.

 Divide de forma organizada as categorias de:
            VIEW – Apresentação.
     CONTROLLER - Lógica de Negócio
    MODEL - Acesso de Dados do projeto.

     Norteia o desenvolvimento no SNEP.
Padrão - MVC

        Controller




Model            View
Controllers
Controllers são classes que representam as
           rotinas da aplicação.

Uma classe de controlador deve estender a
    classe Zend_Controller_Action.

      Cada método terá a sua Views.

   Controle as requisições da aplicação.
Controllers
<?php
class AgentsController extends
Zend_Controller_Action {

  public function indexAction() { }
  public function addAction() { }
  public function removeAction() { }
  public function editAction() { }
}
?>
Controllers
A estrutura do Controlador e seus métodos
       definem a URL da aplicação.


modulo/controlador/index/
modulo/controlador/add/
modulo/controlador/remove/
modulo/controlador/edit/
Views
As visões são a interface com o usuário.

  Emprega PHP, HTML e Javascript.

      São organizadas por pastas
      com o nome do controlador.

Cada método tem uma view arquivo.phtml
Hands On
●   Estrutura do MVC.
●   Escrever um
    controlador.
●   Escrever uma view.
Bibliotecas

    Representam a camada Model do MVC.


lib/Zend – Dá suporte a aplicação como um todo.

lib/Snep – Persistência de dados no banco e/ou
arquivos de configuração.

lib/PBX – Abstração do PBX.
lib/Snep
Possui classes para manipulação de dados.

Estão associadas a interface web do SNEP.

Manipula informações do banco de dados e
arquivos de configuração do SNEP/Asterisk.

       Classes mais especializadas.
          Snep_Form, Snep_Db
Hands On
●   Estrutura de Classes.
●   Exemplo de uso no
    controlador criado.
●   CostCenter_Manager
●   Mostra Snep_Form
    uma especialização
    de Zend_Form.
lib/PBX
Classes que abstraem diversos
      aspectos do PBX.

  Interface (Ramais, Troncos)
        Regra de Negócio
   Ação de Regra de Negócio

Interface com o Asterisk via AMI.
lib/PBX


$asterisk = PBX_Asterisk_AMI::getInstance();

$asterisk->Command(“core show channels”);

PBX_Trunks::getAll();
AGI
                                      Regras
           Dial
Asterisk
           Plan                  SNEP   De
                                      Negócio




                                           Dialplan
                                           Dialplan
                         Interfaces
                          Interfaces
                                           Regras
                                           Regras

                   Troncos
                    Troncos       Ramais
                                  Ramais
                                            Ações
                                            Ações
Hands On
●   Consultas no Asterisk
    utilizando a classe
    PBX_Asterisk_AMI.

●   Exemplo com Ramais
lib/Zend


Biblioteca Zend, dão suporte a aplicação.

Podem ser estendidas por outras Classes.
Zend_Registry
    É um recipiente onde objetos são
armazenados. Objetos ficam disponíveis em
             toda aplicação.

Esse mecanismo substitui o uso de variáveis
      globais. register_globals = Off.

 Zend_Registry::set('objeto', $objeto);

 $objeto = Zend_Registry::get('index');
Zend_Db

$db = Zend_Registry::get(“db”);

$select = $db->select()
             ->from(“peers”)
             ->where(“name != 'admin'”)
             ->order(“id”);

$stmt = $db->query( $select );
$resultado = $stmt->fetchAll( );
Zend_Config

  Faz o parse de arquivos de configuração.
                .ini ou .xml

   O SNEP utiliza Zend_Config_Ini para ler o
  setup.conf e Zend_Registry para guarda-lo.

Os parâmetros do setup.conf podem ser obtidos

Zend_Config::get('config')->system->debug;
Zend_Translate
A versão 1.4 do SNEP conta com suporte a
internacionalização.

Toda e qualquer string deve ser definida com
Zend_Translate, desta forma ela torna-se
dinâmica.

Como o Zend_Translate é um atributo da
View, seu uso é diferente na Visão, Controlador
e Modelo.
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”);
Forms

Cada form é definido em XML seguindo um padrão.
Define tipo do elemento e validação do formulário.

$xml = new Zend_Config_Xml("example.xml");
$form = new Snep_Form( $xml );
$this->view->form = $form;
Forms
<?xml version="1.0" encoding="UTF-8"?>
<form>
   <elements>
        <nome>
           <type>text</type>
           <options>
              <label> Nome </label>
              <required>true</required>
           </options>
        </nome>
        <id>
           <type> hidden </type>
        </id>
   </elements>
</form>
Forms
Um objeto do tipo Snep_Form possui diversos
    métodos herdados de Zend_Form.
 O método isValid() é responsável por validar
          os dados do formulário.
$isValid = $form->isValid( $_POST );

if ( $isValid ) {
     echo “Form Válido!”;
} else {
     echo “Form Inválido!”;
}
Hands On
●   Zend_Config
●   Zend_Db
●   Zend_Form
●   Zend_Translate
Obrigado!


                  Perguntas?
                  Sugestões?
Rafael Bozzetti
rafael@thesource.com.br
rafael@opens.com.br
@rafaelbozzetti

Contenu connexe

Tendances

Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Arley Rodrigues
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6Wagner Bianchi
 
Sql Server Stored Procedures
Sql Server   Stored ProceduresSql Server   Stored Procedures
Sql Server Stored Proceduresalexdutra
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009silva.edgar
 
Desenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureDesenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureFernando Roberto Proença
 
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
 
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQLT@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQLTargettrust
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6Wagner Bianchi
 

Tendances (20)

Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Triggers no SQL Server
Triggers no SQL ServerTriggers no SQL Server
Triggers no SQL Server
 
Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1
 
Aula10 sql-ddl
Aula10 sql-ddlAula10 sql-ddl
Aula10 sql-ddl
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6
 
Sql Server Stored Procedures
Sql Server   Stored ProceduresSql Server   Stored Procedures
Sql Server Stored Procedures
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009
 
Desenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureDesenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored Procedure
 
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
 
Aprofundamento de DDL e DML
Aprofundamento de DDL e DMLAprofundamento de DDL e DML
Aprofundamento de DDL e DML
 
Model View Controller
Model View ControllerModel View Controller
Model View Controller
 
Aprofunde se no php 5.3
Aprofunde se no php 5.3Aprofunde se no php 5.3
Aprofunde se no php 5.3
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQLT@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
 
Java 08
Java 08Java 08
Java 08
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
 
Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
 
Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 

Similaire à Snep arquitetura

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
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireportfpsgyn
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniterAnderson Gonçalves
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaAndroid Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaFelipe Silveira
 
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
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_frameworkMilton Rodrigues
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend frameworkMarcos Oliveira
 
Controlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e SubversionControlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e Subversionlekitamura
 

Similaire à Snep arquitetura (20)

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
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Maverick v1.0
Maverick v1.0Maverick v1.0
Maverick v1.0
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireport
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Estudo de caso: Windows NT
Estudo de caso: Windows NTEstudo de caso: Windows NT
Estudo de caso: Windows NT
 
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaAndroid Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
 
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
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Palestra
PalestraPalestra
Palestra
 
Introdução ao Apache Ant
Introdução ao Apache AntIntrodução ao Apache Ant
Introdução ao Apache Ant
 
Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_framework
 
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
 
Controlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e SubversionControlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e Subversion
 

Snep arquitetura

  • 1. Amim Knabben <amim@thesource.com.br> Rafael Bozzetti <rafael@thesource.com.br>
  • 2. Histórico - SNEP Escrito por Flávio Somensi, em PHP puro. Modelo mantido até a versão 1.2.2. Na versão 1.3.0 o ambiente Zend Framework começou a ser introduzido gradualmente. A série 1.3.x convive com dois ambientes. A série 1.4.x foi totalmente reescrita utilizando o Zend Framework.
  • 3. Como é distribuído. A versão ISO, vem com ambiente previamente instalado e configurado. É baseado em Debian. Só Série 1.3.x. Código fonte disponibilizado no formato tar.gz, exige a configuração do ambiente. Pode ser obtido no repositório SVN.
  • 4. Repositório SVN O Projeto é hospedado no Source Forge. O repositório TRUNK é a versão atual de desenvolvimento, não estável. https://snep.svn.sourceforge.net/svnroot/snep/trunk/ Os repositórios TAGS são versões fechadas e estáveis. https://snep.svn.sourceforge.net/svnroot/snep/tags/
  • 5. Versão de Desenvolvimento Para obter do projeto é necessário o Subversion (SVN). A estrutura pode ser atualizada quando necessário. https://snep.svn.sourceforge.net/ svnroot/snep/trunk/
  • 6. Download do Código http://192.168.0.14/dev/ Disponibilizamos o código fonte do SNEP 1.4 para acompanhamento. Baixe-o e Descompacte. tar xvf snep-1.4.tar.gz -C /var/www/
  • 7. O Arquivo de Configuração includes/setup.conf Parametriza dados de configuração do ambiente SNEP
  • 8. Configuração do Apache /install/snep.apache Arquivo previamente configurado que define a configuração no Apache do SNEP Copiar para /etc/apache/sites-enabled/ É baseado no ambiente Debian. Necessita que o serviço seja reiniciado.
  • 9. Banco de Dados A estrutura do banco e os dados iniciais do SNEP estão na pasta default/installer/ schema.sql Estrutura de tabelas. system_data.sql Dados iniciais do SNEP. cnl-data.sql Dados para localização de chamadas.
  • 10. Atualização de Banco install / update / ● As atualizações do ├── 1.1.0 banco são versionadas │ └── database.sql e encontram-se na ├── 1.1.3 pasta install/update/. │ └── database.sql ├── 1.1.6 │ └── database.sql ├── 1.2.0 ● A atualização do banco │ └── database.sql de dados deve ser ├── 1.3.0 gradual, versão a │ └── database.sql ├── 1.3.1 versão. │ └── database.sql └── 1.3.2 └── database.sql
  • 11. /etc/asterisk O SNEP possui sua própria estrutura de configuração para o Asterisk. Os arquivos de configuração do SNEP são incluídos pelos do Asterisk. Não devem ser manipulados manualmente. Estão em install/etc/asterisk/
  • 12. AGI's O Asterisk delega o roteamento de ligações ao SNEP. Isso é feito por intermédio do AGI. Deve ser criado um link simbólico chamado /var/lib/asterisk/agi-bin/snep Os Agi's do SNEP estão na pasta /agi/
  • 13. Arquivos de Som As rotinas do SNEP precisam de acesso aos arquivos de som do Asterisk. São os arquivos de áudio padrão e as músicas em espera. Essa integração é feita por links simbólicos criados na pasta /sounds/ pt_BR - /var/lib/asterisk/sounds/pt_BR moh - /var/lib/asterisk/moh
  • 14. Unixodbc O acesso do Asterisk ao banco de dados é feito por intermédio do Unixodbc. O SNEP também disponibiliza os arquivos de referência para a configuração do mesmo. Esta referência diz respeito ao res_odbc.conf Estão na pasta install/etc/ São unixodbc.ini e odbcinst.ini
  • 15. Hands On ● Estrutura de Arquivos ● setup.conf ● Apache. ● Banco de dados. ● Arquivos /etc/asterisk/ ● Integração AGI ● Arquivos de Som ● Unixodbc
  • 17. Estrutura do Projeto Interface do Usuário ( web ) Manipula Dados no Banco de Dados Manipula Arquivos de Configuração Interage com Asterisk via AMI. Interface com Asterisk ( agi ) Asterisk delega a Lógica de ligações ao SNEP Por intermédio do AGI
  • 18. Padrão - MVC O MVC é um padrão de arquitetura que o SNEP segue, é utilizado para construir as rotinas da aplicação. Divide de forma organizada as categorias de: VIEW – Apresentação. CONTROLLER - Lógica de Negócio MODEL - Acesso de Dados do projeto. Norteia o desenvolvimento no SNEP.
  • 19. Padrão - MVC Controller Model View
  • 20. Controllers Controllers são classes que representam as rotinas da aplicação. Uma classe de controlador deve estender a classe Zend_Controller_Action. Cada método terá a sua Views. Controle as requisições da aplicação.
  • 21. Controllers <?php class AgentsController extends Zend_Controller_Action { public function indexAction() { } public function addAction() { } public function removeAction() { } public function editAction() { } } ?>
  • 22. Controllers A estrutura do Controlador e seus métodos definem a URL da aplicação. modulo/controlador/index/ modulo/controlador/add/ modulo/controlador/remove/ modulo/controlador/edit/
  • 23. Views As visões são a interface com o usuário. Emprega PHP, HTML e Javascript. São organizadas por pastas com o nome do controlador. Cada método tem uma view arquivo.phtml
  • 24. Hands On ● Estrutura do MVC. ● Escrever um controlador. ● Escrever uma view.
  • 25. Bibliotecas Representam a camada Model do MVC. lib/Zend – Dá suporte a aplicação como um todo. lib/Snep – Persistência de dados no banco e/ou arquivos de configuração. lib/PBX – Abstração do PBX.
  • 26. lib/Snep Possui classes para manipulação de dados. Estão associadas a interface web do SNEP. Manipula informações do banco de dados e arquivos de configuração do SNEP/Asterisk. Classes mais especializadas. Snep_Form, Snep_Db
  • 27. Hands On ● Estrutura de Classes. ● Exemplo de uso no controlador criado. ● CostCenter_Manager ● Mostra Snep_Form uma especialização de Zend_Form.
  • 28. lib/PBX Classes que abstraem diversos aspectos do PBX. Interface (Ramais, Troncos) Regra de Negócio Ação de Regra de Negócio Interface com o Asterisk via AMI.
  • 30. AGI Regras Dial Asterisk Plan SNEP De Negócio Dialplan Dialplan Interfaces Interfaces Regras Regras Troncos Troncos Ramais Ramais Ações Ações
  • 31. Hands On ● Consultas no Asterisk utilizando a classe PBX_Asterisk_AMI. ● Exemplo com Ramais
  • 32. lib/Zend Biblioteca Zend, dão suporte a aplicação. Podem ser estendidas por outras Classes.
  • 33. Zend_Registry É um recipiente onde objetos são armazenados. Objetos ficam disponíveis em toda aplicação. Esse mecanismo substitui o uso de variáveis globais. register_globals = Off. Zend_Registry::set('objeto', $objeto); $objeto = Zend_Registry::get('index');
  • 34. Zend_Db $db = Zend_Registry::get(“db”); $select = $db->select() ->from(“peers”) ->where(“name != 'admin'”) ->order(“id”); $stmt = $db->query( $select ); $resultado = $stmt->fetchAll( );
  • 35. Zend_Config Faz o parse de arquivos de configuração. .ini ou .xml O SNEP utiliza Zend_Config_Ini para ler o setup.conf e Zend_Registry para guarda-lo. Os parâmetros do setup.conf podem ser obtidos Zend_Config::get('config')->system->debug;
  • 36. Zend_Translate A versão 1.4 do SNEP conta com suporte a internacionalização. Toda e qualquer string deve ser definida com Zend_Translate, desta forma ela torna-se dinâmica. Como o Zend_Translate é um atributo da View, seu uso é diferente na Visão, Controlador e Modelo.
  • 37. 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”);
  • 38. Forms Cada form é definido em XML seguindo um padrão. Define tipo do elemento e validação do formulário. $xml = new Zend_Config_Xml("example.xml"); $form = new Snep_Form( $xml ); $this->view->form = $form;
  • 39. Forms <?xml version="1.0" encoding="UTF-8"?> <form> <elements> <nome> <type>text</type> <options> <label> Nome </label> <required>true</required> </options> </nome> <id> <type> hidden </type> </id> </elements> </form>
  • 40. Forms Um objeto do tipo Snep_Form possui diversos métodos herdados de Zend_Form. O método isValid() é responsável por validar os dados do formulário. $isValid = $form->isValid( $_POST ); if ( $isValid ) { echo “Form Válido!”; } else { echo “Form Inválido!”; }
  • 41. Hands On ● Zend_Config ● Zend_Db ● Zend_Form ● Zend_Translate
  • 42. Obrigado! Perguntas? Sugestões? Rafael Bozzetti rafael@thesource.com.br rafael@opens.com.br @rafaelbozzetti