SlideShare a Scribd company logo
1 of 25
Download to read offline
Módulos no SNEP




Amim Knabben <amim@thesource.com.br>
Rafael Bozzetti <rafael@thesource.com.br>
Baixe o Módulo Exemplo
 http://goo.gl/whK6q
O que é um Módulo
     Um módulo é uma parte de um
        programa que pode ser
    desenvolvido independentemente.

Adiciona funcionalidades extras ao SNEP, é
     facilmente instalado e atualizado.

        Deve seguir o padrão da
         Estrutura do Projeto.
MVC
O Módulo deve seguir o
    Padrão MVC
Estrutura do Módulo
MODEL

CONTROLLER

VIEW

ACTIONS              Descritor
                     do Módulo
INSTALLER

DADOS
Forms, Javascript,
Css, Imagens.
Módulo – Série 1.3.x

              Estrutura
              padronizada do
              Módulo.



              Descritor do módulo.
Descritor de Módulo 1.3.x
class Example extends
Snep_Module_Descriptor {

     public function __construct() {
       $this->setName("ModuleName");
       $this->setVersion("1.0");
       $this->setDescription("Descrição");
       $this->setModuleId('example');
       ...
     }
}
Descritor de Módulo 1.3.x
Definição do menu, no método __construct( )

$menu_item =
new Snep_Menu_Item( "Example",
                      "Consulta no Banco",
                      "example/teste/database/");
$menu =
new Snep_Menu_Item( 'example',
                      'Module',
                      null,
                      $menu_item );
$this->setMenuTree( array( $menu ) );
Descritor de Módulo 1.3.x
Inclui o caminho do Lib/ no include_path.

$path = Zend_Registry::get('config')->system
                                    ->path
                                    ->base;

set_include_path( get_include_path() .
                  PATH_SEPARATOR .
                  $path .
                  "/modules/example/lib");
Módulo – Série 1.4.x

           Estrutura padronizada
           do Módulo.


           Descritor do Módulo.


           Define estrutura de
           menus e controle de
           acesso.
Descritor de Módulo 1.4
                Info.xml
<module>
  <name> Snep Example Module </name>
  <description> Example </description>
  <author> OpenS Tecnologia </author>
  <website> www.snep.com.br </website>
</module>
Descritor de Módulo 1.4

              resources.xml
<example>
  <group id="example" label="Example">
     <resource id="x" label="x"> </resource>
     <resource id="y" label="y"> </resource>
     <resource id="z" label="z"> </resource>
  </group>
</example>
Model
      Cada módulo possui suas próprias
      classes, estas ficam acessíveis a
         qualquer rotina do sistema.


class Example_Manager {
   public static function get( $id ) { }
   public static function add( $dados ) { }
   public static function remove( $id ) { }
   public static function update( $dados ) { }
}
Controllers
Na pasta controllers são definidas classes que
     representam as rotinas da aplicação.

 Uma classe de controlador deve estender a
     classe Zend_Controller_Action.

    O método indexAction é necessário.

        Cada método terá a sua View.
Controllers
// Definição de uma classe de controlador
// Deve informar o módulo e ter um nome

class NomeModulo_AgentsController extends
Zend_Controller_Action {

    // Métodos da Classe
    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.

  O módulo do controlador é informado.
http://localhost/snep/index.php/

/NomeModulo/agents/      indexAction()
/NomeModulo/agents/add/
/NomeModulo/agents/remove/
/NomeModulo/agents/edit/
Actions
Actions são classes que definem
 Ações para Regras de Negócio.
Uma classe de ação deve estender
  a classe PBX_Rule_Action.
  Estas classes são instanciadas
   automaticamente pelo SNEP.
Actions
class TocaAudioDiscaTroncoAction extends
PBX_Rule_Action {
   public function __construct( ) { }
   public function getName( ) { }
   public function getVersion( ) { }
   public function getDesc( ) { }
   public function getConfig( ) { }
   public function setConfig( $config ) { }
   public function execute( $asterisk,
                            $request ) { }
}
Actions
public function getConfig() {
  if( isset( $this->config['ccustos'] ) ) {
      $ccustos = "<value>{$this->config['ccustos']}</value>";
  }else{
       $ccustos = " ";
  }
      return <<<XML
<params>
  <ccustos>
      <id>ccustos</id>
      $ccustos
  </ccustos>
</params>
XML;
}
Actions

public function execute( $asterisk, $request ) {

    $asterisk->exec_goto( $this->config['context'],
                          $request->destino, 1 );

}
Installer
A pasta installer contém a estrutura do
          banco do módulo.

 A subpasta installer/update contém
 atualizações do banco versionadas.


$ mysql -u snep -p snep25 < schema.sql
Módulo Exemplo

 Disponibilizamos um módulo exemplo
 para incentivar o desenvolvimento de
   novos projetos baseados na infra-
          estrutura do SNEP.


Disponível nas duas versões: 1.4 e 1.3.x.
Módulo Exemplo
O módulo foi criado para exemplificar as
 possibilidades dos módulos do SNEP.
 Cadastro simples em banco de dados.
 Uso de Model ( Example_Manager )
       Demostração do CRUD.
Demonstração da criação e validação de
            formulários.
Fork Me
É nosso objetivo que o projeto seja
   facilmente copiado e alterado,
estimulando o surgimento de novos
             módulos.
O Projeto do módulo exemplo está
      disponível no GitHub.
    Cadastre-se e faça um fork
   Necessita ter o git instalado.
       # apt-get install git
Fork Me
http://goo.gl/kL4PR

More Related Content

What's hot

Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Dalton Martins
 
Sql Server Stored Procedures
Sql Server   Stored ProceduresSql Server   Stored Procedures
Sql Server Stored Procedures
alexdutra
 
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
Targettrust
 
Exercícios de mysql
Exercícios de mysqlExercícios de mysql
Exercícios de mysql
Leo Frazão
 

What's hot (20)

Triggers no SQL Server
Triggers no SQL ServerTriggers no SQL Server
Triggers no SQL Server
 
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
Aula10 sql-ddl
Aula10 sql-ddlAula10 sql-ddl
Aula10 sql-ddl
 
Oracle 11g resumo
Oracle 11g resumoOracle 11g resumo
Oracle 11g resumo
 
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
 
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
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009
 
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
 
Model View Controller
Model View ControllerModel View Controller
Model View Controller
 
Aprofundamento de DDL e DML
Aprofundamento de DDL e DMLAprofundamento de DDL e DML
Aprofundamento de DDL e DML
 
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
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
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
 
Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
 
Exercícios de mysql
Exercícios de mysqlExercícios de mysql
Exercícios de mysql
 
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
 

Similar to Modulos SNEP

Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6
Erisvaldo Junior
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
Eduardo Mendes
 
Odi tutorial configuração repositórios mestre e trabalho
Odi tutorial   configuração repositórios mestre e trabalhoOdi tutorial   configuração repositórios mestre e trabalho
Odi tutorial configuração repositórios mestre e trabalho
Caio Lima
 
Orientação a Objetos - Da Teoria a Pratica
Orientação a Objetos - Da Teoria a PraticaOrientação a Objetos - Da Teoria a Pratica
Orientação a Objetos - Da Teoria a Pratica
elliando dias
 
Orientacao A Objetos Da Teoria A Pratica Em Java
Orientacao A Objetos   Da Teoria A Pratica Em JavaOrientacao A Objetos   Da Teoria A Pratica Em Java
Orientacao A Objetos Da Teoria A Pratica Em Java
elliando dias
 

Similar to Modulos SNEP (20)

Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6
 
Php 05 Mvc
Php 05 MvcPhp 05 Mvc
Php 05 Mvc
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
 
Implementação de
Implementação de Implementação de
Implementação de
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Odi tutorial configuração repositórios mestre e trabalho
Odi tutorial   configuração repositórios mestre e trabalhoOdi tutorial   configuração repositórios mestre e trabalho
Odi tutorial configuração repositórios mestre e trabalho
 
Artigo Padrões J2EE: Um exemplo de uso
Artigo Padrões J2EE: Um exemplo de usoArtigo Padrões J2EE: Um exemplo de uso
Artigo Padrões J2EE: Um exemplo de uso
 
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 ?!
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de Front
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPress
 
Pattners Everywhere, Even in Javascript
Pattners Everywhere, Even in JavascriptPattners Everywhere, Even in Javascript
Pattners Everywhere, Even in Javascript
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutos
 
Orientação a Objetos - Da Teoria a Pratica
Orientação a Objetos - Da Teoria a PraticaOrientação a Objetos - Da Teoria a Pratica
Orientação a Objetos - Da Teoria a Pratica
 
Orientacao A Objetos Da Teoria A Pratica Em Java
Orientacao A Objetos   Da Teoria A Pratica Em JavaOrientacao A Objetos   Da Teoria A Pratica Em Java
Orientacao A Objetos Da Teoria A Pratica Em Java
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
 

Modulos SNEP

  • 1. Módulos no SNEP Amim Knabben <amim@thesource.com.br> Rafael Bozzetti <rafael@thesource.com.br>
  • 2. Baixe o Módulo Exemplo http://goo.gl/whK6q
  • 3. O que é um Módulo Um módulo é uma parte de um programa que pode ser desenvolvido independentemente. Adiciona funcionalidades extras ao SNEP, é facilmente instalado e atualizado. Deve seguir o padrão da Estrutura do Projeto.
  • 4. MVC O Módulo deve seguir o Padrão MVC
  • 5. Estrutura do Módulo MODEL CONTROLLER VIEW ACTIONS Descritor do Módulo INSTALLER DADOS Forms, Javascript, Css, Imagens.
  • 6. Módulo – Série 1.3.x Estrutura padronizada do Módulo. Descritor do módulo.
  • 7. Descritor de Módulo 1.3.x class Example extends Snep_Module_Descriptor { public function __construct() { $this->setName("ModuleName"); $this->setVersion("1.0"); $this->setDescription("Descrição"); $this->setModuleId('example'); ... } }
  • 8. Descritor de Módulo 1.3.x Definição do menu, no método __construct( ) $menu_item = new Snep_Menu_Item( "Example", "Consulta no Banco", "example/teste/database/"); $menu = new Snep_Menu_Item( 'example', 'Module', null, $menu_item ); $this->setMenuTree( array( $menu ) );
  • 9. Descritor de Módulo 1.3.x Inclui o caminho do Lib/ no include_path. $path = Zend_Registry::get('config')->system ->path ->base; set_include_path( get_include_path() . PATH_SEPARATOR . $path . "/modules/example/lib");
  • 10. Módulo – Série 1.4.x Estrutura padronizada do Módulo. Descritor do Módulo. Define estrutura de menus e controle de acesso.
  • 11. Descritor de Módulo 1.4 Info.xml <module> <name> Snep Example Module </name> <description> Example </description> <author> OpenS Tecnologia </author> <website> www.snep.com.br </website> </module>
  • 12. Descritor de Módulo 1.4 resources.xml <example> <group id="example" label="Example"> <resource id="x" label="x"> </resource> <resource id="y" label="y"> </resource> <resource id="z" label="z"> </resource> </group> </example>
  • 13. Model Cada módulo possui suas próprias classes, estas ficam acessíveis a qualquer rotina do sistema. class Example_Manager { public static function get( $id ) { } public static function add( $dados ) { } public static function remove( $id ) { } public static function update( $dados ) { } }
  • 14. Controllers Na pasta controllers são definidas classes que representam as rotinas da aplicação. Uma classe de controlador deve estender a classe Zend_Controller_Action. O método indexAction é necessário. Cada método terá a sua View.
  • 15. Controllers // Definição de uma classe de controlador // Deve informar o módulo e ter um nome class NomeModulo_AgentsController extends Zend_Controller_Action { // Métodos da Classe public function indexAction( ) { } public function addAction( ) { } public function removeAction( ) { } public function editAction( ) { } }
  • 16. Controllers A estrutura do Controlador e seus métodos definem a URL da aplicação. O módulo do controlador é informado. http://localhost/snep/index.php/ /NomeModulo/agents/ indexAction() /NomeModulo/agents/add/ /NomeModulo/agents/remove/ /NomeModulo/agents/edit/
  • 17. Actions Actions são classes que definem Ações para Regras de Negócio. Uma classe de ação deve estender a classe PBX_Rule_Action. Estas classes são instanciadas automaticamente pelo SNEP.
  • 18. Actions class TocaAudioDiscaTroncoAction extends PBX_Rule_Action { public function __construct( ) { } public function getName( ) { } public function getVersion( ) { } public function getDesc( ) { } public function getConfig( ) { } public function setConfig( $config ) { } public function execute( $asterisk, $request ) { } }
  • 19. Actions public function getConfig() { if( isset( $this->config['ccustos'] ) ) { $ccustos = "<value>{$this->config['ccustos']}</value>"; }else{ $ccustos = " "; } return <<<XML <params> <ccustos> <id>ccustos</id> $ccustos </ccustos> </params> XML; }
  • 20. Actions public function execute( $asterisk, $request ) { $asterisk->exec_goto( $this->config['context'], $request->destino, 1 ); }
  • 21. Installer A pasta installer contém a estrutura do banco do módulo. A subpasta installer/update contém atualizações do banco versionadas. $ mysql -u snep -p snep25 < schema.sql
  • 22. Módulo Exemplo Disponibilizamos um módulo exemplo para incentivar o desenvolvimento de novos projetos baseados na infra- estrutura do SNEP. Disponível nas duas versões: 1.4 e 1.3.x.
  • 23. Módulo Exemplo O módulo foi criado para exemplificar as possibilidades dos módulos do SNEP. Cadastro simples em banco de dados. Uso de Model ( Example_Manager ) Demostração do CRUD. Demonstração da criação e validação de formulários.
  • 24. Fork Me É nosso objetivo que o projeto seja facilmente copiado e alterado, estimulando o surgimento de novos módulos. O Projeto do módulo exemplo está disponível no GitHub. Cadastre-se e faça um fork Necessita ter o git instalado. # apt-get install git