Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP, Smarty e o Template View Pattern

7,497 views

Published on

Published in: Technology
  • Be the first to comment

PHP, Smarty e o Template View Pattern

  1. 1. PHP, Smarty e o Template View Pattern FSL - 12 de Outubro de 2007 Bruno Pedro <bpedro@computer.org>
  2. 2. FSL 2007 Bruno Pedro Conteúdo • Motivação • A solução • Template View Pattern • Model, Helper e View • Smarty • Resumo PHP, Smarty e o Template View Pattern 2
  3. 3. FSL 2007 Bruno Pedro Motivação É fácil misturar lógica e apresentação PHP, Smarty e o Template View Pattern 3
  4. 4. FSL 2007 Bruno Pedro Motivação É muito fácil misturar lógica e apresentação PHP, Smarty e o Template View Pattern 4
  5. 5. FSL 2007 Bruno Pedro Motivação Acesso ao MySQL a partir da apresentação PHP, Smarty e o Template View Pattern 5
  6. 6. FSL 2007 Bruno Pedro Motivação Consumo de RSS na apresentação PHP, Smarty e o Template View Pattern 6
  7. 7. FSL 2007 Bruno Pedro Motivação Spaghetti Código difícil de manter PHP, Smarty e o Template View Pattern 7
  8. 8. FSL 2007 Bruno Pedro Motivação Escapar ao Spaghetti Monster PHP, Smarty e o Template View Pattern 8
  9. 9. FSL 2007 Bruno Pedro Motivação • É fácil misturar lógica e apresentação • É tentador aceder à informação a partir da apresentação • O código torna-se confuso com o decorrer do tempo • É complicado manter este tipo de código PHP, Smarty e o Template View Pattern 9
  10. 10. FSL 2007 Bruno Pedro A solução + PHP, Smarty e o Template View Pattern 10
  11. 11. FSL 2007 Bruno Pedro A solução Lógica Apresentação PHP, Smarty e o Template View Pattern 11
  12. 12. FSL 2007 Bruno Pedro Vantagens • Facilita alterações à apresentação, que poderão ser frequentes • Melhora a robustez da lógica • Aumenta a segurança da aplicação • Melhora o desempenho da aplicação • Permite utilizar a mesma apresentação em diferentes aplicações PHP, Smarty e o Template View Pattern 12
  13. 13. FSL 2007 Bruno Pedro Não é fácil • Exige disciplina e metodologia • Leva tempo • Dá vontade de voltar para trás • Parecem sempre existir outras formas mais simples PHP, Smarty e o Template View Pattern 13
  14. 14. FSL 2007 Bruno Pedro Template View Pattern fonte: Fowler, M., Patterns of Enterprise Application Architecture, p. 350 PHP, Smarty e o Template View Pattern 14
  15. 15. FSL 2007 Bruno Pedro Template View Pattern • Separação real entre lógica e apresentação • A informação aparece nas páginas através de marcadores (tags) específicos • Toda a lógica antes da apresentação não escreve nem devolve HTML • Solução ideal para equipas em que existem programadores e Web designers PHP, Smarty e o Template View Pattern 15
  16. 16. FSL 2007 Bruno Pedro Template View Pattern Apresentação Lógica <html> <body> Calculator Helper 12 + 5 = sum Calculator {$calc->sum x=12 y=5} multiply ... </body> </html> PHP, Smarty e o Template View Pattern 16
  17. 17. FSL 2007 Bruno Pedro Model, Helper e View Model Helper View <html> <body> Calculator Helper 12 + 5 = sum Calculator {$calc->sum x=12 y=5} multiply ... </body> </html> PHP, Smarty e o Template View Pattern 17
  18. 18. FSL 2007 Bruno Pedro Model, Helper e View • Divisão facilita a separação entre lógica e apresentação • Possibilidade de delegar tarefas em cada uma das camadas a equipas diferentes • Diminui a complexidade do código, facilitando a sua manutenção PHP, Smarty e o Template View Pattern 18
  19. 19. FSL 2007 Bruno Pedro Model PHP, Smarty e o Template View Pattern 19
  20. 20. FSL 2007 Bruno Pedro Model • Implementa a lógica do negócio: • acesso à informação (bases de dados); • algoritmos específicos; • cálculo numérico; • acesso a Web Services. PHP, Smarty e o Template View Pattern 20
  21. 21. FSL 2007 Bruno Pedro Helper PHP, Smarty e o Template View Pattern 21
  22. 22. FSL 2007 Bruno Pedro Helper • Implementa a lógica funcional: • input do utilizador; • paginação de resultados; • adaptação e agregação de informação. PHP, Smarty e o Template View Pattern 22
  23. 23. FSL 2007 Bruno Pedro View PHP, Smarty e o Template View Pattern 23
  24. 24. FSL 2007 Bruno Pedro View • Implementa a lógica de apresentação: • interface com o utilizador; • aparência e estética das páginas; • selecção da informação a apresentar. PHP, Smarty e o Template View Pattern 24
  25. 25. FSL 2007 Bruno Pedro Ferramentas Apresentação Lógica ? <html> <body> Calculator Helper 12 + 5 = sum Calculator {$calc->sum x=12 y=5} multiply ... </body> </html> PHP, Smarty e o Template View Pattern 25
  26. 26. FSL 2007 Bruno Pedro Porque não PHP? • Proteger o template de acessos a funções potencialmente perigosas • Permitir que o template seja manipulado por alguém com poucos conhecimentos de programação • Evitar a tendência do código spaghetti • Oferecer um conjunto de funcionalidades suficientes à gestão da apresentação PHP, Smarty e o Template View Pattern 26
  27. 27. FSL 2007 Bruno Pedro “Make it simple, but not simpler.” Albert Einstein Fonte:The Library of Congress PHP, Smarty e o Template View Pattern 27
  28. 28. FSL 2007 Bruno Pedro Smarty • Motor de templates com sintaxe simples • Utiliza objectos • Permite compilar templates, melhorando o seu desempenho • Bastante versátil e modular PHP, Smarty e o Template View Pattern 28
  29. 29. FSL 2007 Bruno Pedro Utilização • Código pode ser obtido em http://smarty.php.net/ • Para começar é necessário instanciar um objecto Smarty PHP, Smarty e o Template View Pattern 29
  30. 30. FSL 2007 Bruno Pedro Configurações • $smarty->template_dir: directório onde o Smarty vai interpretar os templates • $smarty->compile_dir: directório onde o Smarty vai gravar os templates compilados • $smarty->cache_dir: directório onde é gravada a cache • $smarty->caching: possibilidade de ligar ou desligar a cache PHP, Smarty e o Template View Pattern 30
  31. 31. FSL 2007 Bruno Pedro Variáveis • Passagem de variáveis que poderão ser usadas pelo template PHP, Smarty e o Template View Pattern 31
  32. 32. FSL 2007 Bruno Pedro Variáveis • {$var} - mostra o conteúdo da variável • {$array[5]} - mostra o conteúdo do 5º elemento do array • {$array.name} - mostra o conteúdo da posição ‘name’ do array • {$obj->name} - mostra o conteúdo do atributo ‘name’ do objecto PHP, Smarty e o Template View Pattern 32
  33. 33. FSL 2007 Bruno Pedro Modificadores • {$name|capitalize}: apresenta em maiúsculas as primeiras letras de todas as palavras • {$today|date_format}: formata a apresentação de uma data e hora • {$title|lower}: converte em minúsculas • {$title|upper}: converte em maiúsculas • {$body|wordwrap:30}: quebra um texto a uma largura específica PHP, Smarty e o Template View Pattern 33
  34. 34. FSL 2007 Bruno Pedro Modificadores • É possível combinar modificadores {$title|capitalize|wordwrap:10} {$text|strip_tags|lower|truncate} PHP, Smarty e o Template View Pattern 34
  35. 35. FSL 2007 Bruno Pedro Funções - capture • Grava numa variável o conteúdo que estiver entre os tags • Exemplo: PHP, Smarty e o Template View Pattern 35
  36. 36. FSL 2007 Bruno Pedro Funções - foreach • Implementa um iterador de arrays • Exemplo: PHP, Smarty e o Template View Pattern 36
  37. 37. FSL 2007 Bruno Pedro Funções - if • Implementa uma condição • Exemplo: PHP, Smarty e o Template View Pattern 37
  38. 38. FSL 2007 Bruno Pedro Funções - include • Inclui outro ficheiro Smarty • O outro ficheiro é interpretado • Todas as variáveis ficam disponíveis no ficheiro incluido • Exemplo: {include file=”ficheiro2.html”} PHP, Smarty e o Template View Pattern 38
  39. 39. FSL 2007 Bruno Pedro Funções - literal • Permite não interpretar um bloco de código • Bastante útil quando temos JavaScript dentro dos templates {literal} Este bloco não é interpretado. {/literal} PHP, Smarty e o Template View Pattern 39
  40. 40. FSL 2007 Bruno Pedro Outras funcionalidades • Muitos outros modificadores e funções • Caching parcial e dependente de identificador • Configurações de segurança • Filtros de templates • Extensível através de plugins PHP, Smarty e o Template View Pattern 40
  41. 41. FSL 2007 Bruno Pedro Separação Apresentação Lógica <html> <body> Calculator Helper 12 + 5 = sum Calculator {$calc->sum x=12 y=5} multiply ... </body> </html> PHP, Smarty e o Template View Pattern 41
  42. 42. FSL 2007 Bruno Pedro Resumo • Separação entre lógica e apresentação • Motivação - os problemas • A solução • Template View Pattern • Model, Helper e View • Smarty PHP, Smarty e o Template View Pattern 42
  43. 43. FSL 2007 Bruno Pedro Questões? PHP, Smarty e o Template View Pattern 43
  44. 44. FSL 2007 Bruno Pedro Mais informação • PHP Manual: http://www.php.net/ • Smarty: http://smarty.php.net/ • DRI: http://www.dri.pt/ • O meu blog: http://unfoldingtheweb.com/ PHP, Smarty e o Template View Pattern 44

×