PHP, Smarty e o Template View Pattern

Post on 05-Dec-2014

10.195 views 1 download

description

 

Transcript of PHP, Smarty e o Template View Pattern

PHP, Smarty e o Template View Pattern

Bruno Pedro <bpedro@computer.org>

FSL - 12 de Outubro de 2007

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

FSL 2007

PHP, Smarty e o Template View Pattern

Bruno Pedro

Motivação

3

É fácil misturar lógica e apresentação

FSL 2007

PHP, Smarty e o Template View Pattern

Bruno Pedro

Motivação

4

É muito fácil misturar lógica e apresentação

FSL 2007

PHP, Smarty e o Template View Pattern

Bruno Pedro

Motivação

5

Acesso ao MySQL a partir da apresentação

FSL 2007

PHP, Smarty e o Template View Pattern

Bruno Pedro

Motivação

6

Consumo de RSS na apresentação

FSL 2007

PHP, Smarty e o Template View Pattern

Bruno Pedro

Motivação

7

Spaghetti

Código difícil de manter

FSL 2007

PHP, Smarty e o Template View Pattern

Bruno Pedro

Motivação

8

Escapar ao Spaghetti Monster

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

FSL 2007

PHP, Smarty e o Template View Pattern

Bruno Pedro

A solução

10

+

FSL 2007

PHP, Smarty e o Template View Pattern

Bruno Pedro

A solução

11

ApresentaçãoLógica

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

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

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

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

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

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

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

PHP, Smarty e o Template View Pattern

FSL 2007 Bruno Pedro

Model

19

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

PHP, Smarty e o Template View Pattern

FSL 2007 Bruno Pedro

Helper

21

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

PHP, Smarty e o Template View Pattern

FSL 2007 Bruno Pedro

View

23

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

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

?

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

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

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

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

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

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

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

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

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}

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

PHP, Smarty e o Template View Pattern

FSL 2007 Bruno Pedro

Funções - foreach

• Implementa um iterador de arrays

• Exemplo:

36

PHP, Smarty e o Template View Pattern

FSL 2007 Bruno Pedro

Funções - if• Implementa uma condição

• Exemplo:

37

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

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

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

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

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

FSL 2007

PHP, Smarty e o Template View Pattern

Bruno Pedro

Questões?

43

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/