Estrutura do Projeto
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Estrutura do Projeto

on

  • 2,359 views

 

Statistics

Views

Total Views
2,359
Views on SlideShare
1,481
Embed Views
878

Actions

Likes
0
Downloads
33
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 Presentation Transcript

  • 1. Estrutura do Projeto: Amim Knabben < [email_address] > Rafael Bozzetti <rafael@thesource.com.br>
  • 2. Tópicos
    • Histórico do Snep
    • 3. Zend Framework
    • 4. Estrutura de arquivos do SNEP
    • 5. Bootstrapping & Configuração
    • 6. MVC & Forms
    • 7. Bibliotecas de Apoio
  • 8. Histórico - Snep
    • Projeto inicialmente escrito por Flávio Somensi, em PHP puro. Este modelo foi mantido até a versão 1.2.2 .
    • 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. ZF – Introdução
    • Zend Framework é um conjunto de classes criadas com base em padrões de desenho de software.
    • 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.
    • 16. Licença New BSD.
    • 17. Versão estável: 1.11.3
  • 18. 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
            • 19. `-- scripts
  • 20. 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).
    • 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. Application.ini
    • Arquivo de configuração utilizado para definir os caminhos, informações padrões, habilitar flags, etc.
    • 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. /includes/setup.conf
    • Arquivo de configuração do SNEP.
    • 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. Padrão - MVC
    • O MVC (Model, View, Controller) se tornou um padrão comum no desenho de aplicações web modernas.
    • 30. Divide de forma organizada as categorias de: Apresentação, Lógica de Negócio e Acesso de Dados do projeto.
  • 31. Bibliotecas e Models
    • Na pasta /lib encontramos as bibliotecas, e Models do SNEP.
    • 32. Atualmente utilizamos a biblioteca PHP-AGI juntamente com uma camada de abstração para facilitar o acesso do Zend a mesma.
  • 33. Models
    • Em / lib/Snep temos as classes Models do projeto .
    • 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. Zend_Db
    • Zend_Db fornece uma interface simples para as tabelas do banco de dados SQL.
    • 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. 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.
    • 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. Banco de Dados - Updates
    • As atualizações do banco são versionadas e encontram-se na pasta install/update/ .
    • 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. Controllers
    • Na pasta controllers são definidas as classes que representam as rotinas de regras de negócio da aplicação.
    • 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. Views
    • As visões são a interface com o usuário.
    • 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.
    • 54. /modules/default/views/scripts/controller/action.phtml
  • 55. Views
  • 56. Forms
    • A pasta forms deve conter todos os formulários.
    • 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. Forms
    • Um objeto do tipo Snep_Form possui diversos métodos herdados de Zend_Form .
    • 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. Zend_Registry
    • O Zend_Registry é um recipiente onde objetos são armazenados. Permitindo que estes objetos estejam disponíveis em toda aplicação.
    • 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. Zend_Translate
    • A versão 1.4 do SNEP conta com suporte a internacionalização.
    • 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” );
  • 71. Obrigado!