php, smarty e o template view pattern

44
PHP, Smarty e o Template View Pattern Bruno Pedro <[email protected] > FSL - 12 de Outubro de 2007

Upload: bruno-pedro

Post on 05-Dec-2014

10.195 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: PHP, Smarty e o Template View Pattern

PHP, Smarty e o Template View Pattern

Bruno Pedro <[email protected]>

FSL - 12 de Outubro de 2007

Page 2: PHP, Smarty e o Template View Pattern

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

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

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

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

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

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

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

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

FSL 2007

PHP, Smarty e o Template View Pattern

Bruno Pedro

A solução

10

+

Page 11: PHP, Smarty e o Template View Pattern

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

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

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

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

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

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

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

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

PHP, Smarty e o Template View Pattern

FSL 2007 Bruno Pedro

Model

19

Page 20: PHP, Smarty e o Template View Pattern

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

PHP, Smarty e o Template View Pattern

FSL 2007 Bruno Pedro

Helper

21

Page 22: PHP, Smarty e o Template View Pattern

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

PHP, Smarty e o Template View Pattern

FSL 2007 Bruno Pedro

View

23

Page 24: PHP, Smarty e o Template View Pattern

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

FSL 2007

PHP, Smarty e o Template View Pattern

Bruno Pedro

Questões?

43

Page 44: PHP, Smarty e o Template View Pattern

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/