• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Estrutura do Projeto
 

Estrutura do Projeto

on

  • 2,259 views

 

Statistics

Views

Total Views
2,259
Views on SlideShare
1,381
Embed Views
878

Actions

Likes
0
Downloads
24
Comments
0

2 Embeds 878

http://dev.sneplivre.com.br 877
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Estrutura do Projeto Estrutura do Projeto Presentation Transcript

    • Estrutura do Projeto: Amim Knabben < [email_address] > Rafael Bozzetti <rafael@thesource.com.br>
    • Tópicos
      • Histórico do Snep
      • Zend Framework
      • Estrutura de arquivos do SNEP
      • Bootstrapping & Configuração
      • MVC & Forms
      • Bibliotecas de Apoio
    • Histórico - Snep
      • Projeto inicialmente escrito por Flávio Somensi, em PHP puro. Este modelo foi mantido até a versão 1.2.2 .
      • 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
      • Zend Framework é um conjunto de classes criadas com base em padrões de desenho de software.
      • 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
        /var/www/snep/ 1.1 |-- Bootstrap.php 1.2 |-- application.ini 5. |-- default `-- forms ( Forms ) 2. |-- lib ( Models ) `-- modules    `-- default       |-- actions 3. |-- controllers ( Controllers )       |-- info.xml       |-- resources.xml 4.    ` -- views ( View)
              • | -- layouts
              • `-- scripts
    • Zend_Application
      • Responsável por carregar o ambiente PHP, incluindo os include_paths e autoloading, além de iniciar a classe Bootstrap (responsável pelo cadastro de recursos utilizados no sistema).
      • 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
      • Arquivo de configuração utilizado para definir os caminhos, informações padrões, habilitar flags, etc.
      • [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
      • Arquivo de configuração do SNEP.
      • 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
    • Padrão - MVC
      • O MVC (Model, View, Controller) se tornou um padrão comum no desenho de aplicações web modernas.
      • Divide de forma organizada as categorias de: Apresentação, Lógica de Negócio e Acesso de Dados do projeto.
    • Bibliotecas e Models
      • Na pasta /lib encontramos as bibliotecas, e Models do SNEP.
      • Atualmente utilizamos a biblioteca PHP-AGI juntamente com uma camada de abstração para facilitar o acesso do Zend a mesma.
    • Models
      • Em / lib/Snep temos as classes Models do projeto .
      • 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 ... ... ...
    • Zend_Db
      • Zend_Db fornece uma interface simples para as tabelas do banco de dados SQL.
      • 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.
      • Permite que qualquer tipo de consulta ou manipulação do banco de dados seja feita utilizando o padrão de desenho Table Data Gateway .
    • 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( );
    • Banco de Dados - MySQL
        A estrutura e dados do banco do SNEP encontram-se na pasta default/installer/
      • schema.sql – Contém a estrutura das tabelas.
      • system_data.sql – Contém os dados iniciais do banco.
      • cnl_data.sql – Contém os dados de localização de chamadas.
    • Banco de Dados - Updates
      • As atualizações do banco são versionadas e encontram-se na pasta install/update/ .
      • 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
    • Controllers
      • Na pasta controllers são definidas as classes que representam as rotinas de regras de negócio da aplicação.
      • Uma classe de controlador deve estender a classe Zend_Controller_Action .
      • O método indexAction() é necessário sendo este a ação padrão do Zend.
      • Cada método terá a uma ou mais Views .
      • Um controlador e seus métodos definem as URL's da aplicação.
    • 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() { } }
    • 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()
    • Views
      • As visões são a interface com o usuário.
      • No Snep utilizamos PHP , HTML e Javascript .
      • São divididas em pastas com o nome do controlador e um arquivo de template .phtml para cada método.
      • /modules/default/views/scripts/controller/action.phtml
    • Views
    • Forms
      • A pasta forms deve conter todos os formulários.
      • Cada form é definido em XML seguindo um padrão.
      • Define tipo e validação do elementos do formulário. $xml = new Zend_Config_Xml( &quot;./default/forms/example.xml&quot; )
      • $form = new Snep_Form( $xml );
      • $this -> view -> form = $form ;
    • 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>
    • 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!” ; }
    • Zend_Registry
      • O Zend_Registry é um recipiente onde objetos são armazenados. Permitindo que estes objetos estejam disponíveis em toda aplicação.
      • 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' );
    • 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” );
    • Obrigado!