3. PHP Advanced
Template View Pattern
fonte: Fowler, M., Patterns of Enterprise Application Architecture, p. 350
User Interface 3
4. PHP Advanced
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
User Interface 4
5. PHP Advanced
Model, Helper e View
Model Helper View
<html>
<body>
Calculator Helper
sum 12 + 5 =
Calculator multiply {$calc->sum x=12 y=5}
...
</body>
</html>
User Interface 5
6. PHP Advanced
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
User Interface 6
8. PHP Advanced
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.
User Interface 8
10. PHP Advanced
Helper
• Implementa a lógica funcional:
• input do utilizador;
• paginação de resultados;
• adaptação e agregação de informação.
User Interface 10
12. PHP Advanced
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.
User Interface 12
13. PHP Advanced
Smarty
• Motor de templates com sintaxe simples
• Utiliza objectos
• Permite compilar templates, melhorando o
seu desempenho
• Bastante versátil e modular
User Interface 13
14. PHP Advanced
Utilização
• Código pode ser obtido em
http://smarty.php.net/
• Para começar é necessário instanciar um
objecto Smarty
User Interface 14
15. PHP Advanced
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
User Interface 15
16. PHP Advanced
Variáveis
• Passagem de variáveis que poderão ser
usadas pelo template
User Interface 16
17. PHP Advanced
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
User Interface 17
18. PHP Advanced
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
User Interface 18
19. PHP Advanced
Modificadores
• É possível combinar modificadores
{$title|capitalize|wordwrap:10}
{$text|strip_tags|lower|truncate}
User Interface 19
20. PHP Advanced
Funções - capture
• Grava numa variável o conteúdo que
estiver entre os tags
• Exemplo:
User Interface 20
21. PHP Advanced
Funções - foreach
• Implementa um iterador de arrays
• Exemplo:
User Interface 21
22. PHP Advanced
Funções - if
• Implementa uma condição
• Exemplo:
User Interface 22
23. PHP Advanced
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”}
User Interface 23
24. PHP Advanced
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}
User Interface 24
25. PHP Advanced
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
User Interface 25