6. Padrão Espaguete
“Qualifica-se de código espaguete um programa de computador
que não segue as regras da programação estruturada e abusa de
desvios, condicionais ou não, o que torna a leitura do mesmo por
seres humanos bem difícil.”
Wikipédia: http://pt.wikipedia.org/wiki/Código_espaguete
7. Lógica Apresentação
• Lógicas de negócio • Html
• Acesso a dados • Design
8. Torna o código mais legível
Útil para equipes que possuem designers e
programadores
Reduz o esforço utilizado para fazer alterações
no código (tanto na apresentação quanto na
lógica)
Torna mais fácil o reaproveitamento de código
9. Biblioteca escrita em PHP que possibilita
fazer a separação entre a lógica de negócio e
a camada de apresentação
10. Como funciona?
O Smarty separa a apresentação em templates
Templates podem ser organizados de maneira
hierárquica
▪ um template pode incluir outro
O Smarty “mistura” as variáveis da aplicação no
template , gerando o código para a visualização
13. Variáveis
<?php /* Smarty version 2.6.20, created on 2008-
10-14 21:45:22
compiled from lista.tpl */ ?>
<html>
<head>
<title><?php echo $this->_tpl_vars['titulo']; ?>
</title>
Smarty </head>
<body>
<h1>Seja bem vindo <?php echo $this-
>_tpl_vars['nome']; ?>!</h1>
</body>
</html>
Index.tpl Compilação
14. <?php /* Smarty version 2.6.20, created
on 2008-10-14 21:45:22
compiled from lista.tpl */ ?> <html>
<html> <head>
<head> <title>Página de boas
<title><?php echo $this- vindas</title>
>_tpl_vars['titulo']; ?> </head>
</title> <body>
</head> <h1>Seja bem vindo Diego!</h1>
<body> </body>
<h1>Seja bem vindo <?php echo $this- </html>
>_tpl_vars['nome']; ?>!</h1>
</body>
Após execução do PHP
</html>
Código gerado pelo Smarty
15. Sintaxe
Todas as tags de template do Smarty contém
delimitadores. Por padrão, estes delimitadores
são { e }, mas eles podem ser alterados.
Tags Smarty Tags HTML
<html>
<head>
<title>{$titulo}</title>
</head>
<body>
<h1>Seja bem vindo {$nome}!</h1>
</body>
</html>
16. Comentários
Os comentários do template ficam entre
asteriscos dentro de delimitadores
{* mostra título da página *}
<title>{$titulo}</title>
<boby>
{* exibe combobox *}
<select>
<option>Selecione ..</option>
</select>
</body>
</html>
17. Configuração
Após descompactar os arquivos do Smart
▪ Incluir o arquivo principal da biblioteca
▪ Criar uma instância da classe Smarty
require 'Smarty.class.php';
$smarty = new Smarty;
18. Configuração
É necessário dizer onde estarão os diretórios que
o Smarty utilizará
// . . .
$smarty->template_dir = '/diretorio/templates/';
$smarty ->compile_dir = '/diretorio/templates_c/';
$smarty ->config_dir = '/diretorio/';
$smarty ->cache_dir = '/diretorio/cache/';
// . . .
19. Variáveis
Para utilizar as variáveis dentro do template é
necessário fazer a atribuição das mesmas
A atribuição de variáveis pode ser feita através do
método Smart::assign()
$smarty->assign(‚nome_variavelquot;, $valor);
20. Variáveis (cont..)
require 'Smarty.class.php';
$smarty = new Smarty;
$valor = 10;
$smarty->assign(‚nome_variavelquot;, $valor);
$smarty->display('index.tpl');
index.tpl
O valor da variável é: {$nome_variavel}
21. Variáveis (cont..)
{* exibe uma variável *}
{$variavel}
{* exibe o terceiro elemento de uma matriz *}
{$matriz[3]}
{* exibe o elemento ‚nome‛ de uma matriz *}
{$matriz.nome}
22. Funções
Funções são processadas e exibidas colocando-se
a função e seus atributos entre delimitadores.
{* Exemplo *}
{nome_funcao atributo1=‚valor 1‛ atributo2=$variavel}
{* include template *}
{include file=‚cabecalho.tpl‛}
{* alterna as cores: branca e cinza *}
{cycle values=‚#fff,#e5e5e5‛}
23. Funções internas
Funções internas são parte integral da linguagem
de template. Você não pode criar funções
personalizadas com o mesmo nome de uma
função interna, e também não pode modificar
funções internas.
foreach,foreachelse,include,literal,if,elseif,else…
24. Funções internas - foreach
{* este exemplo irá mostrar todos os valores da matriz
$custid *}
{foreach from=$nomes_empregados item=nome}
Nome: {$nome}<br>
{/foreach}
Semelhante:
foreach ($nomes_empregados as $nome) {
echo ‚Nome: ‛ . $nome . ‚<br>‛;
}
25. Funções internas - if
{if $nome == quot;Diegoquot;}
Bem vindo {$nome}!
{elseif $nome == quot;Andrequot;}
Bom dia professor {$nome}!
{else}
Bom dia senhor {$nome}
{/if}
{if $nome == quot; Diegoquot; || $nome == quot; Andre quot;}
. . .
{/if}
26. Funções internas - include
{* inclue o template cabecalho.tpl *}
{include file=quot;cabecalho.tplquot;}
{* usando o caminho absoluto *}
{include
file=quot;file:C:/local/meus/templates/cabecalho.tplquot;}
27. Funções personalizadas
O Smarty possui várias funções personalizadas
que você pode usar em seus templates.
Estas funções normalmente estão disponíveis
dentro do diretório plugins do Smarty
assign, counter,cycle,
30. Modificadores de variáveis
Permitem a modificação de variáveis, funções ou
strings
{* Faz o título ficar com letras maiúsculas *}
<h2>{$titulo|upper}</h2>
<h3>{‚SUBTITULO DA PAGINA‛|lower}</h3>
{* Faz com que $topico use somente 40 caracteres, e
coloca ... no fim da frase *}
Tópico: {$topico|truncate:40:quot;...quot;}
31. Modificadores de variáveis (cont…)
É possível também aninhar modificadores
{‚Diego‛|cat:‛ Tremper‛|upper}
OUTPUT:
DIEGO TREMPER
32. Modificadores de variáveis (cont…)
Outros modificadores…
{* Substitui Brasilia por Porto Alegre *}
{‚Em Brasilia 19 horas‛|replace:‛Brasilia‛:‛Porto Alegre‚}
{* Ex.: Em Porto Alegre 19 horas *}
{* Adiciona espaços entre cada caractere *}
{‚Em Brasilia 19 horas‛|spacify}
{* Ex.: E m B r a s i l i a 1 9 h o r a s*}
34. Existem alternativas para manter a
organização em seu código
Separar a lógica de apresentação da lógica de
negócio é uma das mais básicas
Não é fácil! Mas com o tempo acaba virando
um costume