Your SlideShare is downloading. ×
PHP, Smarty e o Template View Pattern
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

PHP, Smarty e o Template View Pattern

6,733
views

Published on

Published in: Technology

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,733
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
260
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. PHP, Smarty e o Template View Pattern FSL - 12 de Outubro de 2007 Bruno Pedro <bpedro@computer.org>
  • 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. FSL 2007 Bruno Pedro Motivação É fácil misturar lógica e apresentação PHP, Smarty e o Template View Pattern 3
  • 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. FSL 2007 Bruno Pedro Motivação Acesso ao MySQL a partir da apresentação PHP, Smarty e o Template View Pattern 5
  • 6. FSL 2007 Bruno Pedro Motivação Consumo de RSS na apresentação PHP, Smarty e o Template View Pattern 6
  • 7. FSL 2007 Bruno Pedro Motivação Spaghetti Código difícil de manter PHP, Smarty e o Template View Pattern 7
  • 8. FSL 2007 Bruno Pedro Motivação Escapar ao Spaghetti Monster PHP, Smarty e o Template View Pattern 8
  • 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. FSL 2007 Bruno Pedro A solução + PHP, Smarty e o Template View Pattern 10
  • 11. FSL 2007 Bruno Pedro A solução Lógica Apresentação PHP, Smarty e o Template View Pattern 11
  • 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. 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. 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. 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. 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. 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. 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. FSL 2007 Bruno Pedro Model PHP, Smarty e o Template View Pattern 19
  • 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. FSL 2007 Bruno Pedro Helper PHP, Smarty e o Template View Pattern 21
  • 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. FSL 2007 Bruno Pedro View PHP, Smarty e o Template View Pattern 23
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. FSL 2007 Bruno Pedro Funções - foreach • Implementa um iterador de arrays • Exemplo: PHP, Smarty e o Template View Pattern 36
  • 37. FSL 2007 Bruno Pedro Funções - if • Implementa uma condição • Exemplo: PHP, Smarty e o Template View Pattern 37
  • 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. 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. 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. 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. 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. FSL 2007 Bruno Pedro Questões? PHP, Smarty e o Template View Pattern 43
  • 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