- 1. Estrutura do Projeto: Amim Knabben < [email_address] >
Rafael Bozzetti
2. Tpicos
- Histrico do Snep 3. Zend Framework 4. Estrutura de arquivos do
SNEP 5. Bootstrapping & Configurao 6. MVC & Forms 7.
Bibliotecas de Apoio
8. Histrico - Snep
- Projeto inicialmente escrito por Flvio Somensi, em PHP puro.
Este modelo foi mantido at a verso1.2.2 . 9. A partir da
verso1.3.0o ambiente Zend foi introduzido gradualmente no projeto.
10. A srie1.3.xconvive com dois ambientes, o legado PHP e a nova
estrutura Zend. 11. A srie1.4foi totalmente reescrita utilizando o
Zend Framework.
12. ZF Introduo
- Zend Framework um conjunto de classes criadas com base em
padres de desenho de software. 13. Visa a padronizao e a reutilizao
de cdigo. 14. um padro da indstria. 15. Possui parceiros
tecnolgicos como: IBM, Google e Microsoft. 16. Licena New BSD. 17.
Verso estvel: 1.11.3
18. Estrutura de Arquivos
- /var/www/snep/ 1.1|-- Bootstrap.php 1.2|-- application.ini5.
|-- 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
- Responsvel por carregar o ambiente PHP, incluindo os
include_paths e autoloading, alm de iniciar a classe Bootstrap
(responsvel pelo cadastro de recursos utilizados no sistema). 21. A
configurao da estrutura do projeto realizada no
arquivoapplication.ini , e a interna do SNEP em/includes/setup.conf
. 22. Ao final, o Zend_Application despacha a requisio para o Front
Controller atravs do mtodo run().
23. Diagrama de Sequncia do Bootstrap 24. Application.ini
- Arquivo de configurao utilizado para definir os caminhos,
informaes padres, habilitar flags, etc. 25. [production]
resources.frontController.params.displayExceptions = 1
resources.frontController.controllerDirectory = APPLICATION_PATH
"/modules/default/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH
"/modules" resources.layout.layoutPath = APPLICATION_PATH
"/modules/default/views/layouts" 26. /includes/setup.conf
- Arquivo de configurao do SNEP. 27. Pode ser lido pelo
Zend_Registry::( 'config' ) 28. O arquivo lido comZend_Config_Inie
armazenado no Registry.
$config= Zend_Registry::get( 'config' ); echo $config ->
system -> path -> base 29. Padro - MVC
- O MVC (Model, View, Controller) se tornou um padro comum no
desenho de aplicaes web modernas. 30. Divide de forma organizada as
categorias de: Apresentao, Lgica de Negcio 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 abstrao para facilitar o acesso do Zend a mesma.
33. Models
- Em / lib/Sneptemos as classes Models do projeto . 34. So
classes que manipulam as entidades atravs de rotinas para acesso
aos dados e alguma lgica de negcio.
/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 mantm uma instncia da classe Zend_Db no
Zend_Registry, permitindo que seja recuperada e utilizada em
qualquer ponto da aplicao. 37. Permite que qualquer tipo de
consulta ou manipulao do banco de dados seja feita utilizando o
padro de desenhoTable Data Gateway .
38. Zend_Db // Instncia 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
pastadefault/installer/
- schema.sql Contm a estrutura das tabelas. 40. system_data.sql
Contm os dados iniciais do banco. 41. cnl_data.sql Contm os dados
de localizao de chamadas.
42. Banco de Dados - Updates
- As atualizaes do banco so versionadas e encontram-se na
pastainstall/update/ . 43. A atualizao do banco de dados deve ser
gradual, verso a verso.
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 pastacontrollersso definidas as classes que representam as
rotinas de regras de negcio da aplicao. 45. Uma classe de
controlador deve estender a classeZend_Controller_Action . 46. O
mtodoindexAction() necessrio sendo este a ao padro do Zend. 47.
Cada mtodo ter a uma ou maisViews . 48. Um controlador e seus
mtodos definem as URL's da aplicao.
49. Controllers // Definio de uma classe de controlador // Deve
informar o mdulo e ter um nome class Agents
ControllerextendsZend_Controller_Action { // Mtodos de ao da Classe
public functionindex Action() { } public functionadd Action() { }
public functionremove Action() { } public functionedit Action() { }
} 50. Controllers A estrutura do Controlador e seus mtodos definem
a URL da aplicao. $base_url =http://localhost/snep/index.php/
agents / index /indexAction() agents / add / addAction() agents /
remove / removeAction() agents / edit / editAction() 51. Views
- As vises so a interface com o usurio. 52. No Snep utilizamosPHP
,HTMLeJavascript . 53. So divididas em pastas com o nome do
controlador e um arquivo de template .phtml para cada mtodo. 54.
/modules/default/views/scripts/controller/action.phtml
55. Views 56. Forms
- A pasta forms deve conter todos os formulrios. 57. Cadaform
definido em XML seguindo um padro. 58. Define tipo e validao do
elementos do formulrio.
$xml=newZend_Config_Xml("./default/forms/example.xml") 59.
$form=newSnep_Form($xml); 60. $this -> view -> form=$form
;
61. Forms text Nome true hidden 62. Forms
- Um objeto do tipoSnep_Formpossui diversos mtodos herdados
deZend_Form . 63. O mtodoisValid () responsvel por validar os dados
do formulrio. 64. $isValid=$form -> isValid ($_POST);
if($isValid) { echo Form Vlido! ; }else{ echo Form Invlido! ;
}
65. Zend_Registry
- O Zend_Registry um recipiente onde objetos so armazenados.
Permitindo que estes objetos estejam disponveis em toda aplicao.
66. Esse mecanismo substitui o uso de variveis 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 verso 1.4 do SNEP conta com suporte a internacionalizao. 68.
Toda e qualquer string deve ser definida com Zend_Translate(),
desta forma ela torna-se dinmica. 69. Como o Zend_Translate um
atributo da View, seu uso diferente na Viso, Controlador e
Modelo.
70. Zend_Translate // Uso na Viso 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!