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

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
10,175
On Slideshare
10,163
From Embeds
12
Number of Embeds
5

Actions

Shares
Downloads
258
Comments
0
Likes
7

Embeds 12

http://www.slideshare.net 8
http://s3.amazonaws.com 1
http://classblogmeister.com 1
http://www.linkedin.com 1
http://www.slideee.com 1

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