Smarty + PHP

30
Universidade Federal dos Vales Universidade Federal dos Vales Jequitinhonha e Mucuri Jequitinhonha e Mucuri Sistemas de Informação Sistemas de Informação Apresentação à Apresentação à Disciplina de E.W. Disciplina de E.W. Tema: Tema: Smarty Smarty Lorena C. De Souza Lorena C. De Souza

description

Este é um slide sobre a biblioteca Smarty do php criada por Lorena C. de Souza, baseada no próprio site smarty.net

Transcript of Smarty + PHP

Page 1: Smarty + PHP

Universidade Federal dos Vales Universidade Federal dos Vales Jequitinhonha e MucuriJequitinhonha e MucuriSistemas de InformaçãoSistemas de Informação

Apresentação à Apresentação à Disciplina de E.W.Disciplina de E.W.

Tema:Tema: SmartySmarty

Lorena C. De SouzaLorena C. De Souza

Page 2: Smarty + PHP

Índice SmartyÍndice Smarty

1 – Apresentação1 – Apresentação

1.1 Templete1.1 Templete1.2 Classe Templete1.2 Classe Templete1.3 Classe Templete Smarty1.3 Classe Templete Smarty1.4 Objetivos1.4 Objetivos1.5 Visões1.5 Visões

2 – Instalação2 – Instalação3 – Sintaxe Básica3 – Sintaxe Básica4 – Exemplos Práticos4 – Exemplos Práticos

Page 3: Smarty + PHP

SmartySmarty

● Qual a definição de Qual a definição de TempleteTemplete??●

Page 4: Smarty + PHP

SmartySmarty

● Qual a definição de Qual a definição de TempleteTemplete??

Um documento sem conteúdo, com apenas a apresentação visual Um documento sem conteúdo, com apenas a apresentação visual (apenas cabeçalhos por exemplo) e instruções sobre onde e qual (apenas cabeçalhos por exemplo) e instruções sobre onde e qual tipo de conteúdo deve entrar a cada parcela da apresentação — tipo de conteúdo deve entrar a cada parcela da apresentação — por exemplo conteúdos que podem aparecer no início e conteúdos por exemplo conteúdos que podem aparecer no início e conteúdos que só podem aparecer no final.que só podem aparecer no final.●

Page 5: Smarty + PHP

THU

SmartySmarty

Page 6: Smarty + PHP

SmartySmarty

Agora qual a definição de Classe Templete?Agora qual a definição de Classe Templete?

Page 7: Smarty + PHP

SmartySmarty

Agora qual a definição de Classe Templete?Agora qual a definição de Classe Templete?

A Classe Templete tem o principal A Classe Templete tem o principal propósitopropósito manter o manter o código HTML em arquivos externos que ficam código HTML em arquivos externos que ficam completamente livres de código PHP. E dessa forma, completamente livres de código PHP. E dessa forma, manter a lógica de programação (PHP) separada da manter a lógica de programação (PHP) separada da estrutura visual (HTML ou XML, CSS, etc).estrutura visual (HTML ou XML, CSS, etc).●

Page 8: Smarty + PHP

SmartySmarty

Com isso, gera duas “extremidades” de Com isso, gera duas “extremidades” de desenvolvimento:desenvolvimento:

● A parte da A parte da VisãoVisão● A parte dos A parte dos ControlesControles

HtmlHtmlCSSCSS PHPPHPPHPPHP

HtmlHtmlCSSCSS

Page 9: Smarty + PHP

SmartySmarty

Sem a Classe Template, o que tem é uma mistura de php, com Sem a Classe Template, o que tem é uma mistura de php, com

html, css e etc.html, css e etc.

<?php

echo "<div> <p> Ol&aacute; Mundo!</p>

</div>";?>

Page 10: Smarty + PHP

SmartySmarty

Com a Classe Template, o que tem é uma organização/separação Com a Classe Template, o que tem é uma organização/separação

entre os componentes de desenvolvimento da aplicação web.entre os componentes de desenvolvimento da aplicação web.

<html><body>

<p>Olá Mundo!</p></body>

</html>

<?php require("Template.class.php");

$tpl = new Template("hello.html"); $tpl->show(); ?>

Page 11: Smarty + PHP

SmartySmartyCaracterísticas específicas da Classe templete Características específicas da Classe templete Smarty:Smarty:

● Engine oficializada pela php.netEngine oficializada pela php.net●

● Ele é extremamente rápido.Ele é extremamente rápido.●

● Sem elevadas interpretações de template, compila Sem elevadas interpretações de template, compila uma vez.uma vez.

● Só recompilará os arquivos de template que foram Só recompilará os arquivos de template que foram alterados.alterados.

● Suporte de caching embutidoSuporte de caching embutido●

● Arquitetura de PluginArquitetura de Plugin

Page 12: Smarty + PHP

SmartySmarty

Vantagens:Vantagens:

Facilidade pra criação uma vez aprendido;Facilidade pra criação uma vez aprendido;

Organização;Organização;

Manutenção de código;Manutenção de código;

Otimização do desenvolvimento do projeto – dois Otimização do desenvolvimento do projeto – dois ambientes.ambientes.

Page 13: Smarty + PHP

Smarty - InstalaçãoSmarty - Instalação

Requisitos:Requisitos:

Servidor Servidor ApacheApache

PHPPHP

Biblioteca do Biblioteca do SmartySmarty

Page 14: Smarty + PHP

Smarty - InstalaçãoSmarty - Instalação

Passos:Passos:

Faça o download do Faça o download do SmartySmarty

Descomprima todas as pastas.Descomprima todas as pastas.

Verifique uma pasta "demo"Verifique uma pasta "demo"

Prepare de maneira a deixar visível ao www­dataPrepare de maneira a deixar visível ao www­data●

● Dê permissão ao diretório "templates_c".Dê permissão ao diretório "templates_c".

Page 15: Smarty + PHP

Smarty - InstalaçãoSmarty - Instalação●Árvore padrão de diretório do Smarty está organizada da seguinte Árvore padrão de diretório do Smarty está organizada da seguinte maneira:maneira:

● / ­ Na raiz estarão os arquivos de lógica (.PHP).● /configs  ­  Arquivos  de  configuração.  É  possível  setar  por  exemplo, 

um  título  padrão  para  todo  seu  sistema,  e  utilizá­lo  nos arquivos de templete.

● /libs ­  Bibliotecas do Smarty, onde também fica  localizada a classe principal.

● /templetes  ­  Diretório  padrão  para  localização  dos  templetes.  São arquivos de interface com o usuário.

● /templetes_c  ­  Diretório  para  cache.  (Deve  estar  com  permissão  de escrita.)

Page 16: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe●Todas as tags de template do Smarty contém delimitadores. Por padrão, Todas as tags de template do Smarty contém delimitadores. Por padrão, estes delimitadores são { e }, mas eles podem ser alterados.estes delimitadores são { e }, mas eles podem ser alterados.●

●  Para o Smarty, todo o conteúdo fora dos delimitadores é mostrado como Para o Smarty, todo o conteúdo fora dos delimitadores é mostrado como conteúdo estático, ou inalterável. Quando o Smarty encontra tags de conteúdo estático, ou inalterável. Quando o Smarty encontra tags de template, ele tenta interpretá­las, e então mostra a saída apropriada em template, ele tenta interpretá­las, e então mostra a saída apropriada em seu lugar.seu lugar.

Page 17: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe● ComentárioComentário

● {* {* Isto é um comentário Isto é um comentário *}*}

● Função, Variáveis e AtributosFunção, Variáveis e Atributos● Funções Inernas: Funções Inernas: {include file=$arquivoInclude}{include file=$arquivoInclude}● Funções Inernas:Funções Inernas: {config_load file="cores.conf"}{config_load file="cores.conf"}● Funções Inernas:Funções Inernas: {if $enfase_nome}{if $enfase_nome}● Funções Personalizadas:Funções Personalizadas: {html_options}{html_options}● Funções Personalizadas:Funções Personalizadas: {html_select_date display_days=yes}{html_select_date display_days=yes}

● Escapando de Interpretação do SmartyEscapando de Interpretação do Smarty● {ldelim}$Name | upper{rdelim}{ldelim}$Name | upper{rdelim}

Page 18: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe● VariáveisVariáveis

● Variável definida do php: ● {$Nome}{$Nome}

● Variável composta definida do php:● {$Contatos[row].Telefone}●

● Variável de configuração: <body bgcolor="{#cordefundo}">

● Variável reservada: ● $smarty

Page 19: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe●Variável Reservada $smartyVariável Reservada $smarty

● Essa variável reservada é utilizada para acessar variáveis especiais do template. Como por exemplo: as variáveis request get, post, cookies, server, enviroment e session. Exemplo:

● Se tem a seguinte URL http://www.domain.com/index.php?page=foo ●

Page 20: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe●Variável Reservada $smartyVariável Reservada $smarty

● Essa variável reservada é utilizada para acessar variáveis especiais do template. Como por exemplo: as variáveis request get, post, cookies, server, enviroment e session. Exemplo:

● Se tem a seguinte URL http://www.domain.com/index.php?page=foo ●

● Com {$smarty.get.page} mostra o valor de page da URL;●

● Para {$smarty.post.page} mostra a variável ”page” de um formulário. (POST)

● Para {$smarty.cookies.username} mostra o valor do cookie "username.

Page 21: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe● Variável Reservada $smartyVariável Reservada $smarty●

● Para {$smarty.server.SERVER_NAME} mostra a variável do servidor "SERVER_NAME".

● Para {$smarty.env.PATH} mostra a variável de ambiente do sistema "PATH".

● Para {$smarty.session.id} mostra a variável ”id” de session do php.

Page 22: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe●Outras sintaxe reservadas do Smarty:●

● {$smarty.now} – retorna o timestamp atual.●

● {$smarty.capture} – captura a saída.●

● {$smarty.template}{$smarty.template} ­ contém o nome do template atual.●

● {$smarty.section}, {$smarty.foreach}●

● {$smarty.ldelim} e {$smarty.rdelim}: delimitador esquerdo e direito.

Page 23: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe●Modificadores de Variáveis

● Para aplicá­lo deve usar a seguinte sintaxe: ● Valor  |  modificador

● Por exemplo:●

● {$topico | truncate:40:"..."} {$articleTitle | capitalize}●

● {$articleTitle | count_characters}  {$articleTitle | cat:" yesterday."}●

Page 24: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe●Modificadores de Variáveis

● Para aplicá­lo deve usar a seguinte sintaxe: ● Valor  |  modificador

● Por exemplo:●

● {$topico | truncate:40:"..."} {$articleTitle | capitalize}●

● {$articleTitle | count_characters}  {$articleTitle | cat:" yesterday."}●

● {$smarty.now | date_format:"%H:%M:%S"} ●

● {$articleTitle | replace:"Garden":"Vineyard"}●

● {$articleTitle|count_paragraphs}

Page 25: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe● Caching

● Usado  para  aumentar  a  velocidade  de  chamada  para  display()  ou fetch() salvando isso num arquivo de saída. 

● Pode fazer coisas  tremendamente rápidas, especialmente  templetes com longo tempo computacional.

● Desde que templetes sejam dinâmicos, é importante ter cuidado com o que você está fazendo cache e por quanto tempo.

● Por  exemplo,  se  você  está  mostrando  a  página  principal  do  seu website  na  qual  as  alterações  de  conteúdo  são  muito  frequentes (hora),  isso  funciona  bem  para  cache  dessa  forma.  Já  um  outro modo, se você está mostrando uma página com um mapa do tempo contendo novas informações por minuto, não faz sentido fazer cache nesta página.

● Caching precisa ser configurado.

Page 26: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe● Exemplo de caching

require('Smarty.class.php');$smarty = new Smarty;$smarty->caching = true;$smarty->display('index.tpl');

Multiple Chaches per Page

Page 27: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe● Plugins

● Plugins são determinadas funcionalidades com características próprias à implementar junto ao Smarty.

● Estes sempre só são lidos quando requisitados. ●

● E cada plugin é lido apenas uma vez, mesmo se você tem várias instâncias diferentes do Smarty rodando na mesma requisição.

● O diretório de plugins pode ser uma string contendo um caminho ou um array contendo multiplos caminhos. Para instalar um plugin, só coloque em um dos diretórios e a Smarty irá usá­lo automaticamente. 

Page 28: Smarty + PHP

Smarty – SintaxeSmarty – Sintaxe

Convenções de Plugins

● Arquivos:  tipo.nome.php

● Onde tipo: ● function● modifier● block● compiler● Prefilter / postfilter / outputfilter● resource● Insert

● function.html_select_date.php, resource.db.php, modifier.spacify.php.

Page 29: Smarty + PHP

Comentários?Dúvidas?

Page 30: Smarty + PHP

Obrigada!!