Download - PHP, Smarty e o Template View Pattern
![Page 2: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/2.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Conteúdo
• Motivação
• A solução
• Template View Pattern
• Model, Helper e View
• Smarty
• Resumo
2
![Page 3: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/3.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
Motivação
3
É fácil misturar lógica e apresentação
![Page 4: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/4.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
Motivação
4
É muito fácil misturar lógica e apresentação
![Page 5: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/5.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
Motivação
5
Acesso ao MySQL a partir da apresentação
![Page 6: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/6.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
Motivação
6
Consumo de RSS na apresentação
![Page 7: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/7.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
Motivação
7
Spaghetti
Código difícil de manter
![Page 8: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/8.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
Motivação
8
Escapar ao Spaghetti Monster
![Page 9: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/9.jpg)
PHP, Smarty e o Template View Pattern
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
9
![Page 10: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/10.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
A solução
10
+
![Page 11: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/11.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
A solução
11
ApresentaçãoLógica
![Page 12: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/12.jpg)
PHP, Smarty e o Template View Pattern
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
12
![Page 13: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/13.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Não é fácil
13
• Exige disciplina e metodologia
• Leva tempo
• Dá vontade de voltar para trás
• Parecem sempre existir outras formas mais simples
![Page 14: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/14.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Template View Pattern
14
fonte: Fowler, M., Patterns of Enterprise Application Architecture, p. 350
![Page 15: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/15.jpg)
PHP, Smarty e o Template View Pattern
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
15
![Page 16: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/16.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
Template View Pattern
16
ApresentaçãoLógica
<html><body>
12 + 5 ={$calc->sum x=12 y=5}
</body></html>
Calculatorsummultiply...
Calculator Helper
![Page 17: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/17.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Model, Helper e View
17
Calculatorsummultiply...
Calculator Helper
<html><body>
12 + 5 ={$calc->sum x=12 y=5}
</body></html>
Model Helper View
![Page 18: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/18.jpg)
PHP, Smarty e o Template View Pattern
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
18
![Page 19: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/19.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Model
19
![Page 20: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/20.jpg)
PHP, Smarty e o Template View Pattern
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.
20
![Page 21: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/21.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Helper
21
![Page 22: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/22.jpg)
PHP, Smarty e o Template View Pattern
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.
22
![Page 23: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/23.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
View
23
![Page 24: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/24.jpg)
PHP, Smarty e o Template View Pattern
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.
24
![Page 25: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/25.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
Ferramentas
25
ApresentaçãoLógica
<html><body>
12 + 5 ={$calc->sum x=12 y=5}
</body></html>
Calculatorsummultiply...
Calculator Helper
?
![Page 26: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/26.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Porque não PHP?
26
• 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
![Page 27: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/27.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
27
Fonte: The Library of Congress
“Make it simple,but not simpler.”
Albert Einstein
![Page 28: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/28.jpg)
PHP, Smarty e o Template View Pattern
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
28
![Page 29: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/29.jpg)
PHP, Smarty e o Template View Pattern
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
29
![Page 30: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/30.jpg)
PHP, Smarty e o Template View Pattern
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
30
![Page 31: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/31.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Variáveis• Passagem de variáveis que poderão ser
usadas pelo template
31
![Page 32: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/32.jpg)
PHP, Smarty e o Template View Pattern
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
32
![Page 33: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/33.jpg)
PHP, Smarty e o Template View Pattern
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
33
![Page 34: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/34.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Modificadores
• É possível combinar modificadores
34
{$title|capitalize|wordwrap:10}
{$text|strip_tags|lower|truncate}
![Page 35: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/35.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Funções - capture• Grava numa variável o conteúdo que
estiver entre os tags
• Exemplo:
35
![Page 36: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/36.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Funções - foreach
• Implementa um iterador de arrays
• Exemplo:
36
![Page 37: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/37.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Funções - if• Implementa uma condição
• Exemplo:
37
![Page 38: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/38.jpg)
PHP, Smarty e o Template View Pattern
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”}
38
![Page 39: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/39.jpg)
PHP, Smarty e o Template View Pattern
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}
39
![Page 40: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/40.jpg)
PHP, Smarty e o Template View Pattern
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
40
![Page 41: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/41.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
Separação
41
ApresentaçãoLógica
<html><body>
12 + 5 ={$calc->sum x=12 y=5}
</body></html>
Calculatorsummultiply...
Calculator Helper
![Page 42: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/42.jpg)
PHP, Smarty e o Template View Pattern
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
42
![Page 43: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/43.jpg)
FSL 2007
PHP, Smarty e o Template View Pattern
Bruno Pedro
Questões?
43
![Page 44: PHP, Smarty e o Template View Pattern](https://reader034.vdocuments.mx/reader034/viewer/2022051817/54880985b47959fb0c8b561a/html5/thumbnails/44.jpg)
PHP, Smarty e o Template View Pattern
FSL 2007 Bruno Pedro
Mais informação
44
• PHP Manual: http://www.php.net/
• Smarty: http://smarty.php.net/
• DRI: http://www.dri.pt/
• O meu blog: http://unfoldingtheweb.com/