SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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 WebDalton Martins
 
Oracle 11g resumo
Oracle 11g resumoOracle 11g resumo
Oracle 11g resumomarcosgama
 
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
 
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
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009silva.edgar
 
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
 
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 2Eduardo Mendes
 
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
 
Exercícios de mysql
Exercícios de mysqlExercícios de mysql
Exercícios de mysqlLeo Frazão
 
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
 

La actualidad más candente (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 a Modulos SNEP

Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
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 6Erisvaldo Junior
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no FrontendHenrique Gogó
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniterAnderson Gonçalves
 
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 ServletsEduardo Mendes
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 
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 trabalhoCaio Lima
 
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 usoErivan de Sena Ramos
 
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
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
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 FrontMichel Ribeiro
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPressLeandrinho Vieira
 
Pattners Everywhere, Even in Javascript
Pattners Everywhere, Even in JavascriptPattners Everywhere, Even in Javascript
Pattners Everywhere, Even in JavascriptGustavo Corrêa Alves
 
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 minutosRodrigo Nossal
 
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 Praticaelliando 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 Javaelliando dias
 

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