Baixe o app para aproveitar ainda mais
Prévia do material em texto
Diego Tremper Zend Certified Engineer Entusiasta PHP Palestrante Estudante Cenário Solução Benefícios Smarty Template Sintaxe Instalação Configuração Variáveis Modificadores de Variáveis Funções Demonstração prática Conclusão Padrão Espaguete Padrão Espaguete Padrão Espaguete Wikipédia: http://pt.wikipedia.org/wiki/Código_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.” Lógica • Lógicas de negócio • Acesso a dados Apresentação • Html • Design 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 Biblioteca escrita em PHP que possibilita fazer a separação entre a lógica de negócio e a camada de apresentação 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 Exemplo Index.tpl <html> <head> <title>{$titulo}</title> </head> <body> <h1>Seja bem vindo {$nome}!</h1> </body> </html> Variáveis Exemplo Index.php <?php // . . . $smarty->assign(‘nome’, ‘Diego’); $smarty->assign(‘titulo’, ‘Página de boas vindas’); $smarty->display(‘index.tpl’); // . . . Variáveis Smarty Index.tpl <?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> </head> <body> <h1>Seja bem vindo <?php echo $this- >_tpl_vars['nome']; ?>!</h1> </body> </html> Compilação <?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> </head> <body> <h1>Seja bem vindo <?php echo $this- >_tpl_vars['nome']; ?>!</h1> </body> </html> Código gerado pelo Smarty <html> <head> <title>Página de boas vindas</title> </head> <body> <h1>Seja bem vindo Diego!</h1> </body> </html> Após execução do PHP Sintaxe Todas as tags de template do Smarty contém delimitadores. Por padrão, estes delimitadores são { e }, mas eles podem ser alterados. <html> <head> <title>{$titulo}</title> </head> <body> <h1>Seja bem vindo {$nome}!</h1> </body> </html> Tags HTMLTags Smarty 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> 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; 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/'; // . . . 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_variavel", $valor); Variáveis (cont..) require 'Smarty.class.php'; $smarty = new Smarty; $valor = 10; $smarty->assign(‚nome_variavel", $valor); $smarty->display('index.tpl'); O valor da variável é: {$nome_variavel} index.tpl 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} 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‛} 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… Funções internas - foreach {* este exemplo irá mostrar todos os valores da matriz $custid *} {foreach from=$nomes_empregados item=nome} Nome: {$nome}<br> {/foreach} foreach ($nomes_empregados as $nome) { echo ‚Nome: ‛ . $nome . ‚<br>‛; } Semelhante: Funções internas - if {if $nome == "Diego"} Bem vindo {$nome}! {elseif $nome == "Andre"} Bom dia professor {$nome}! {else} Bom dia senhor {$nome} {/if} {if $nome == " Diego" || $nome == " Andre "} . . . {/if} Funções internas - include {* inclue o template cabecalho.tpl *} {include file="cabecalho.tpl"} {* usando o caminho absoluto *} {include file="file:C:/local/meus/templates/cabecalho.tpl"} 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, Funções personalizadas – html_options <select name=‚cidades‛> {html_options options=$cidades selected=$cidade_selecionada} </select> OUTPUT: <select name=‚cidades‛> <option value="1000">Alegrete</option> <option value="1001">Canoas</option> <option value="1002">Erechim</option> <option value="1003" selected="selected">Porto Alegre</option> </select> Funções personalizadas – mailto {mailto address="eu@exemplo.com"} OUTPUT: <a href="mailto:eu@exemplo.com">eu@exemplo.com</a> {mailto address="eu@exemplo.com" text=‚contato"} OUTPUT: <a href="mailto:eu@exemplo.com">contato</a> 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:"..."} Modificadores de variáveis (cont…) É possível também aninhar modificadores {‚Diego‛|cat:‛ Tremper‛|upper} OUTPUT: DIEGO TREMPER 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*} Demonstração Prática 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 Perguntas? Obrigado!!! Contato: diegotremper@gmail.com LinkedIn: http://www.linkedin.com/in/diegotremper Blog: http://www.diegotremper.com Smarty: http://www.smarty.net/ PHP: http://www.php.net
Compartilhar