Академический Документы
Профессиональный Документы
Культура Документы
R.A. 0200057
Jaguariúna
2005
2
R.A. 0200057
Jaguariúna
2005
3
Ao prof. Ademário
AGRADECIMENTOS
A minha família que sempre me apoiou para que pudesse conquistar meus objetivos
e em especial, minha esposa Luciana que em todos os momentos, seja de alegria ou
dificuldades se mostrou firme e paciente. Aos meus filhos Vinícius e Caroline que
tiveram que entender a necessidade do estudo quando os deixava em casa para
estudar.
Aos meus amigos Mário Silva, Dante e Robison que em todos os momentos foram
parceiros e contribuiram para o sucesso deste trabalho, me ajudando com as
dúvidas e críticas de incentivo.
MARCILIO, Samuel Jonas. Uso de templates com ênfase na ferramenta Smarty Template
Engine e a linguagem de programação PHP para desenvolvimento de aplicações para a
Internet. 2005. Monografia (Bacharelado em Ciências da Computação) – Curso de Ciências
da Computação da Faculdade de Jaguariúna, Jaguariúna.
RESUMO
O presente trabalho tem por objetivo relatar as atividades desenvolvidas do aluno Samuel
Jonas Marcilio, orientado pelo professor Ademário Araújo Junior. Consiste em uma pesquisa
sobre o uso de templates, com ênfase na ferramenta Smarty Template Engine no
desenvolvimento de aplicações para a Internet juntamente com a utilização da linguagem de
programação PHP (acrônimo recursivo para PHP: “Hypertext Preprocessor"). Devido à
complexidade de códigos, busca-se a legibilidade dos mesmos para o desenvolvimento e
manutenção ao se implementar uma aplicação web, bem como a separação dos códigos da
aplicação. O objetivo será demonstrar as vantagens, facilidades e comparações do uso da
Smarty em relação à programação com mistura de códigos PHP, HTML e outros. Serão
acrescentadas funcionalidades extras ao smarty, como exemplo: montagem automática de
formulários de cadastro e desenvolvimento de aplicações web para demonstração da
ferramenta Smarty Templates.
ABSTRACT
The present job has the target to relate the developed activities by the student Marcilio,
Samuel Jonas, oriented by the teacher Junior, Ademário Araujo. It consists in a research of
the use of templates, with emphasis on the Smarty Template Engine tool to develop
applications for the Internet together with the use of PHP programming language (recursive
acronym to PHP: “Hypertext Pre-processor”). Due to the codes complexity, it looks for their
legibility to developing and the maintenance on the implementation of a web application as
well as the separation of the application codes. The objective will be to demonstrate the
advantages, facilities and comparison of the Smarty uses in relation of the PHP, HTML and
others mix programming. There will be added extra functionalities to the Smarty as example:
automatic building forms and web applications development to demonstrate the Smarty
Template tools.
SUMÁRIO
7. REFERÊNCIAS BIBLIOGRÁFICAS.............................................................................45
8. ANEXOS ......................................................................................................................46
8.1. Anexo 1 – index.conf – Sistema de notícias ............................................................46
8.2. Anexo 2 – index.tpl – Sistema de notícias ...............................................................46
8.3. Anexo 3 – mostra_noticias.tpl – Sistema de notícias...............................................47
8.4. Anexo 4 – index.php – Sistema de notícias.............................................................48
8.5. Anexo 5 – mostra_noticia.php – Sistema de notícias ..............................................48
8.6. Anexo 6 – conexao.php – Sistema de notícias........................................................49
8.7. Anexo 7 – index_mix2.php – Sistema de Listagem de um cadastro de livros..........49
8.8. Anexo 8 – index1.php - Sistema de Listagem de um cadastro de livros ..................50
8.9. Anexo 9 – index.tpl - Sistema de Listagem de um cadastro de livros ......................51
8.10. Anexo 10 – index.conf - Sistema de Listagem de um cadastro de livros .................52
8.11. Anexo 11 – conexao.php - Sistema de Listagem de um cadastro de livros .............52
8.12. Anexo 12 – index.php – Gerador de formulários de contato....................................52
8.13. Anexo 13 – index.tpl - Gerador de formulários de contato.......................................53
8.14. Anexo 14 – index.conf - Gerador de formulários de contato....................................54
10
LISTA DE FIGURAS
LISTA DE EXEMPLOS
LISTA DE SIGLAS
1. INTRODUÇÃO
1.1. OBJETIVO
O propósito deste trabalho de graduação é apresentar uma pesquisa sobre uma das
soluções emergentes para o desenvolvimento de sistemas e aplicações web, o uso das
ferramentas denominadas “Template Engines” ou modelos ou simplesmente templates , que
são utilizadas em conjunto com a linguagem PHP (acrônimo recursivo para “PHP: Hypertext
Pré-Processor”) como base na estrutura das aplicações para Internet.
Para o estudo, será focado o pacote de ferramentas “Smarty Template Engine”,
acesso em http://smarty.php.net/, um dos pacotes mais avançados da atualidade.
Serão apresentadas as diferenças entre a programação com a mistura de códigos
(HTML + PHP por exemplo) e aplicações desenvolvidas com a utilização de templates.
14
2. PHP
De acordo com Hojtsy (2004, Cap.1), PHP, que significa “Hypertext Preprocessor”, é
uma linguagem que permite criar sites web dinâmicos, possibilitando uma interação com o
usuário através de formulários, parâmetros da URL (endereço da página) e links. A diferença
de PHP com relação a linguagens semelhantes a Javascript é que o código PHP é
executado no servidor, sendo enviado para o cliente apenas HTML puro. Desta maneira é
possível interagir com bancos de dados e aplicações existentes no servidor, com a
vantagem de não expor o código fonte para o cliente. Isso pode ser útil quando o programa
está lidando com senhas ou qualquer tipo de informação confidencial.
O que diferencia PHP de um script CGI escrito em C ou Perl é que o código PHP fica
embutido no próprio HTML, enquanto no outro caso é necessário que o script CGI gere todo
o código HTML, ou leia de um outro arquivo.
Em resumo, o objetivo principal da linguagem é permitir a desenvolvedores escrever
páginas que serão geradas dinamicamente rapidamente.
Segundo Schimid (2004, Cap.1), o PHP é focado para ser uma linguagem de script do
lado do servidor, portanto, pode-se fazer qualquer coisa que outro programa CGI pode fazer,
como: coletar dados de formulários, gerar páginas com conteúdo dinâmico ou enviar e
receber cookies e muito mais.
Esses são os maiores campos onde os scripts PHP podem se utilizados:
Script no lado do servidor (server-side). Este é o mais tradicional e principal campo de
atuação do PHP. Serão necessárias três coisas para o trabalho. O interpretador do PHP
(como CGI ou módulo), um servidor web e um browser. Basta rodar o servidor web
conectado a um PHP instalado.
Pode-se acessar os resultados do programa PHP com um browser, visualizando a
página PHP através do servidor web.
Pode-se fazer um script PHP funcionar sem um servidor web ou browser. A única
coisa necessária é o interpretador.
Escrevendo aplicações GUI no lado do cliente (client-side), o PHP não é
(provavelmente) a melhor linguagem para produção de aplicações com interfaces em
janelas, mas o faz muito bem.
O PHP pode ser utilizado na maioria dos sistemas operacionais, incluindo Linux,
variantes Unix (incluindo HP-UX, Solaris e OpenBSD), Microsoft Windows e outros. Também
16
é suportado pela maioria dos servidores web atuais, incluindo Apache, Microsoft Internet
Information Server, Personal Web Server, Netscape e muitos outros. O PHP pode ser
configurado como módulo para a maioria dos servidores, e para os outros como um CGI
comum.
Com o PHP, portanto, tem-se a liberdade para escolher o sistema operacional e o
servidor web. Do mesmo modo, pode-se escolher entre utilizar programação estrutural ou
programação orientada a objeto, ou ainda uma mistura deles.
O PHP não está limitado a gerar somente HTML. As habilidades do PHP incluem
geração de imagens, arquivos PDF e animações Flash criados dinamicamente. Pode-se
facilmente criar qualquer padrão texto, como XHTML e outros arquivos XML. O PHP pode
gerar esses padrões e os salvar no sistema de arquivos, em vez de imprimi-los, formando
um cache dinâmico de suas informações no lado do servidor.
PHP também tem como uma das características mais importantes o suporte a um
grande número de bancos de dados, como dBase, Interbase, mSQL, mySQL, Oracle,
Sybase, PostgreSQL e vários outros. Construir uma página baseada em um banco de dados
torna-se uma tarefa extremamente simples com PHP. Além disso, PHP tem suporte a outros
serviços através de protocolos de comunicação como IMAP, SNMP, NNTP, POP3 e,
logicamente, HTTP. Ainda é possível abrir sockets e interagir com outros protocolos.
De acordo com Schimid (2004, Cap.1), a linguagem PHP foi concebida durante
meados de 1994 por Rasmus Lerdorf. As primeiras versões não foram disponibilizadas,
tendo sido utilizadas em sua home-page apenas para que ele pudesse ter informações
sobre as visitas que estavam sendo feitas. A primeira versão utilizada por outras pessoas foi
disponibilizada em 1995, e ficou conhecida como “Personal Home Page Tools” (ferramentas
para página pessoal). Era composta por um sistema bastante simples que interpretava
algumas macros e alguns utilitários que rodavam “por trás” das home-pages: um livro de
visitas, um contador, etc...
Em meados de 1995 o interpretador foi reescrito, e ganhou o nome de PHP/FI, o “FI”
veio de um outro pacote escrito por Rasmus que interpretava dados de formulários HTML
(Form Interpreter). Ele combinou os scripts do pacote Personal Home Page Tools com o FI e
adicionou suporte a mSQL, nascendo assim o PHP/FI.
Em 1997, PHP/FI 2.0, a segunda versão lançada da implementação C, obteve
milhares de usuários ao redor do mundo (estimado), com aproximadamente 50,000 domínios
reportando que tinha PHP/FI 2.0 instalado, obtendo 1% dos domínios da Internet. Enquanto
isto havia milhares de pessoas contribuindo com pequenos códigos para o projeto, e ainda
17
assim o PHP/FI 2.0 foi oficialmente lançado somente em Novembro de 1997, após perder a
maior parte de sua vida em versões betas. Ele foi rapidamente substituído pelas versões do
PHP 3.0. Uma das maiores características do PHP 3.0 era sua forte capacidade de
extensibilidade. Em seu pico, o PHP 3.0 foi instalado em aproximadamente 10% dos
servidores Web da Internet. Os objetivos do projeto eram melhorar a performance de
aplicações complexas.
A empresa Zend Engine fazendo disso um grande sucesso, foi introduzida em meados
de 1999 lançando então a versão do PHP4 no ano 2000 com altíssimo grau de
melhoramento de performance. Atualmente, a versão do PHP5 já foi lançada com novas
funcionalidades e diretivas e a maioria dos códigos do PHP4 são entendidos pela versão do
PHP5 sem problemas de incompatibilidade entre as versões.
18
3. TEMPLATES
De acordo com Orth (2004, p.10) de forma resumida, o “objetivo dos modelos
(templates) é separar a lógica do programa da lógica de exibição”. Isso não consiste em
separar o código HTML do código PHP, mas sim em colocar em lugares separados os
códigos responsáveis pela exibição e os códigos responsáveis por outras tarefas, como por
exemplo, o acesso e obtenção de informações de um banco de dados.
Portanto, o objetivo é criar scripts PHP independentes do layout que será utilizado para
exibir o conteúdo da página. Fazendo essa separação, facilita-se a compreensão como a
manutenção do código dos programas. Existem controvérsias com relação ao uso de
templates, mas, a maioria dos programadores que começam a usá-los, adotam-no como
ferramenta contínua no trabalho. De acordo com a faq (perguntas mais freqüêntes) sugerida
no site PHP Brasil, por Villa, acesso em http://phpbrasil.com/faqs/faq.php/id/1417, 2004, a
maioria dos programadores aprovam o uso dos templates em seus projetos.
misturados
• Smarty
• FastTemplate
• PowerTemplate
• Xtemplate
• ecTemplate
• Atemplate
20
É um pacote de códigos criado por David Hahn, que hoje é CEO da empresa New
Digital Group (localizada em Lincoln, Nebraska e fundada recentemente em, 2005),
especializada em construir redes de publicidades online. Smarty é um sistema de templates
para PHP, mais especificamente, fornece uma maneira fácil de controlar a separação da
aplicação lógica e o conteúdo de sua apresentação.
Um objetivo do projeto Smarty é a separação da lógica do negócio e da lógica da
apresentação. Isto significa que os templates podem certamente conter a lógica sob a
circunstância que é somente para apresentação. Alguns exemplos são: a inclusão de outros
templates, alternação de cores nas linhas das tabelas, colocar o texto de uma variável em
maiúsculo, percorrer uma matriz de dados e mostrá-la, etc. são todos exemplos de
apresentação lógica. Isto não significa que o Smarty força a separação da lógica de
negócios e da lógica de apresentação. O Smarty não tem conhecimento do que é o que na
aplicação.
Um dos aspectos únicos do Smarty é seu sistema de compilação de templates. O
Smarty lê os arquivos de templates e cria scripts PHP a partir deles. Uma vez criados, eles
são executados sem ser necessária uma outra compilação do template novamente. Com
isso, os arquivos de template não são 'parseados' (analisados) toda vez que um template é
solicitado, e cada template tem a total vantagem de soluções de cache do compilador PHP.
Desde que o Smarty ficou conhecido como um “mecanismo de template”, poderia ter
sido chamado mais precisamente como uma “estrutura de apresentação”. Isto é, provê que o
programador e o projetista do template com uma riqueza de ferramentas, automatizar tarefas
comumente negociáveis com a camada de uma apresentação. Embora possa ser usado
para um simples propósito, seu foco é o desenvolvimento rápido e sem problemas enquanto
mantém alta performance, escalabilidade, segurança e crescimento futuro.
22
Algumas características mais notáveis que o torna eficiente conforme o Site oficial da
Smarty, acesso em http://smarty.php.net/rightforme.php, mar, 2005.
• Caching: Smarty provê características mais refinadas para o cache de todas as partes
de uma página de web renderizada, ou deixar partes sem cachê. Os programadores
podem registrar funções de templates como “cacheáveis” ou “não-cacheáveis”, grupos
de páginas com cachê dentro de unidades lógicas para melhor manutenção, etc.
• Arquivos de configuração: O smarty pode admitir variáveis puxadas de arquivos
configuráveis. Os designers podem manter valores comuns para muitos templates em
uma locação sem a intervenção de programadores, e variáveis configuráveis podem
ser facilmente compartilhadas entre programadores e porções de apresentação de
uma aplicação.
• Segurança: Templates não contem código PHP. Por esta razão, um designer de
templates está desatrelado ao completo poder do PHP, mas somente com o
subconjunto disponível para eles, vindo dos programadores.
• Fácil de usar e manter: Designers de páginas de web não lidam com sintaxe de
código PHP, mas ao invés, lidam com sintaxe de templates fácil de usar não muito
diferente do plano HTML. Os templates são muito próximos de uma representação
final de saída. Drasticamente encurtam o ciclo de projeto.
• Modificadores de variáveis: O conteúdo de variáveis atribuídas pode ser facilmente
ajustado para mostrar hora com modificadores, tal como mostrar tudo maiúsculo,
HTML espaçado, formatação de data, truncar os blocos de texto, adicionar espaços
entre caracteres, etc.
• Funções Templates: Muitas funções estão disponíveis para o designer de templates
para manusear tais tarefas, tais como gerar seguimentos de código HTML (dropdowns,
tabelas, pop-ups, etc.), mostrando conteúdo de outros templates em linha, conteúdo de
vetores de loop, formatação de texto para saída de emails, cores cíclicas.
• Filtros: O programador tem completo controle da saída e compilação dos conteúdos
dos templates com os pré-filtros, pós-filtros e filtros de saída.
• Recursos: Templates podem ser baixados de inúmeras fontes, criando novos
manipuladores de recursos, e então usá-los nos projetos.
• Plugins: Quase todos os aspectos do Smarty são controlados com o uso de plugins.
Eles são geralmente tão fácil quanto jogá-los dentro de um diretório e então,
mencionando-os no template ou usando-os no código da aplicação.
• Add-ons: Muitos Add-nos de comunidades contribuintes estão disponíveis tais como
Paginação, Formulários de validação, Menus Drop Down, Calendários, etc...Essas
23
teste.php
<html>
<body>
<?php
while…bla
?>
</body>
</html>
Para executar a Smarty será necessário que a versão do PHP seja 4.0.6 ou superior.
O Smarty é uma ferramenta que pode ser baixada livremente na internet bem como sua
documentação, direto do site Templates disponível em http://smarty.php.net/.
25
Para utilizar uma aplicação Smarty será necessária a criação de alguns diretórios. A
Smarty requer quatro diretórios que, por padrão, são nomeados como:
DIRETÓRIO DESCRIÇÃO
templates Armazena os arquivos dos templates(modelos).
templates_c Diretório que armazena os templates compilados. Deve
possuir permissão de escrita.
configs Armazena arquivos de configuração, se houverem.
cache Armazena os arquivos de cache, e não ser criado caso
essa funcionalidade esteja desabilitada. Deve possuir
permissão de escrita.
Os nomes desses diretórios estão definidos nas propriedades da classe, nas variáveis
$template_dir, $compile_dir, $config_dir e $cache_dir. É recomendável a criação desses
diretórios separadamente para cada aplicação a ser desenvolvida.
Por exemplo, uma aplicação que apresenta a lista de produtos de uma empresa, e a
raiz do servidor web fosse /www, poderia ter a seguinte estrutura:
/www/produtos/templates/
/www/produtos/templates/produtos.tpl
/www/produtos/templates_c/
/www/produtos/config/
/www/produtos/cache/
/www/produtos/produtos.php
São necessários apenas dois arquivos, os restantes são diretórios que serão utilizados
pela Smarty. O arquivo produtos.tpl seria o arquivo do template, ou seja, aquele que define o
layout da página, enquanto que o arquivo produtos.php seria o programa PHP responsável
por obter as informações sobre os produtos.
É comum também nomear o programa principal como index.php, para simplificar o
acesso ao navegador. Por exemplo, se o arquivo produtos.php fosse nomeado para
index.php, ao invés de digitar no navegador.
http://dominio.com.br/produtos/produtos.php
bastaria digitar:
http://dominio.com.br/produtos
27
Isto acontece porque normalmente os servidores web que suportam PHP são
configurados para utilizar a página index.php como sendo a página inicial de um diretório.
Importante: O /www não faz parte do endereço, pois, ele é o diretório raiz do servidor
web (document root), portanto, ao digitar o endereço do site, já estará acessando os
arquivos localizados dentro do diretório /www.
4.7.1. Delimitadores
4.7.2. Comentários
4.7.3. Funções
Além de colocar variáveis e comentários nas tags da Smarty, pode-se também incluir
uma chamada para alguma função. Orth (2004, p.19).
Existem dois tipos de funções:
• Embutidas – são as funções internas da Smarty, e não podem ser modificadas.
Exemplo:
28
4.7.4. Atributos
Usar atributos na Smarty é muito semelhante a usar atributos nas tags HTML. Eles
servem para passar informações à função, definindo como será o seu funcionamento.
Passando-se uma string como valor do atributo, recomenda-se utilizar aspas em torno
dela. As aspas não são necessárias caso seja fornecida uma variável ao invés de uma
string, ou se o valor do atributo for lógico (como true, false, yes, no). Orth (2004, p.20).
Exemplo:
{include file=“cabecalho.tpl”}
{include file=$nome_arquivo}
{include file=#nome_arquivo#}
{html_select_date display_days=yes}
<SELECT name=lista>
{html_options value=$valores selected=$selecionado output=$saida}
</SELECT>
4.7.5. Variáveis
Existem três tipos de variáveis que podem ser usadas em uma aplicação Smarty.
• Variáveis definidas pelo PHP – iniciam com o caracter $. Podem ser variáveis
simples, arrays indexados, arrays associativos ou objetos. Orth (2004, p.23).
Exemplo:
29
{$nome}
{$dados[0]}
{$dados.nome}
{$dados->nome}
É possível aplicar mais de um modificador a uma variável. Para isso basta colocá-los
em seqüência, separados pelo caracter | (pipe). A ordem de aplicação é da esquerda para a
30
direita. Por exemplo, para exibir o conteúdo da variável $nome com letras minúsculas e com
um espaço entre cada caracter, tem-se:
{$nome|lower|spacify}
Alguns modificadores podem receber parâmetros adicionais, que irão afetar o seu
comportamento. Esses parâmetros devem ser especificados após o nome do modificador,
sendo precedidos pelo caracter : (dois pontos). Por exemplo, para exibir apenas os 30
primeiros caracteres da variável $nome, tem-se:
{$nome|truncate:30}
A seguir será apresentada a lista dos modificadores da Smarty que podem ser
utilizados, bem como uma descrição do que cada um deles faz:
• capitalize – coloca em maiúsculas as primeiras letras de cada palavra contida na
variável.
• count_characters – retorna o número de caracteres de uma variável.
• cat – permite a concatenação de um valor ao conteúdo da variável. O valor a ser
concatenado deve ser passado como parâmetro.
• count_paragraphs – retorna o número de parágrafos existentes no conteúdo de uma
variável.
• count_sentences – retorna o número de palavras existentes no conteúdo de uma
variável.
• date_format – formata a data e a hora. Esse modificador permite aos designers ter o
controle sobre o formato que a data deve ser exibida ao usuário.
• default – define um valor padrão para uma variável. Esse valor deve ser passado
como parâmetro, e será utilizado caso a variável esteja vazia ou não definida.
• escape – formata o valor da variável de acordo com o tipo fornecido como parâmetro.
Os tipos possíveis são html, htmlall, url, quotes, hexentity e javascript. O padrão é html.
• indent – faz a identificação das linhas da string. Possui dois parâmetros opcionais,
para especificar o número de caracteres a serem identados e o caracter a ser usado
para fazer a indentificação.
• lower – exibe o conteúdo de uma variável em letras minúsculas.
• nl2br – converte todas as quebras de linha <br/> no conteúdo da variável.
• regex_replace – realiza busca e substituição de expressões regulares em uma
variável.
• replace – realiza busca e substituição em uma variável.
31
• spacify – permite incluir um espaço entre cada caracter . Pode-se ainda especificar
outro caracter ou com a string a ser usada ao invés de um espaço.
• string_format – formata uma string. Pode ser usada, por exemplo, para números
decimais. A sintaxe é semelhante a do comando sprint do PHP.
• strip – substitui espaços, quebras de linhas e tabulações repetidas por um espaço
simples ou com a string fornecida como parâmetro.
• strip_tags – remove as tags de marcação , ou seja, os trechos delimitados pelos
caracteres < e >.
• truncate – trunca uma variável em um determinado tamanho. Se nenhum tamanho for
fornecido, será usado o padrão (80). Opcionalmente, pode-se definir um texto a ser
exibido ao final, caso a variável seja truncada.
• upper – exibe o conteúdo de uma variável em letras maiúsculas.
• wordwrap – define uma largura para cada coluna em uma string se nenhum tamanho
for fornecido, será usado o valor padrão (80). Opcionalmente, pode-se especificar um
segundo parâmetro, indicando o caracter ou string a ser usada na troca de linha. O
padrão é \n.
as variáveis globais, que serão usadas em várias páginas. Por exemplo, poderia ser definida
uma variável global contendo a cor de fundo das páginas. Se o designer quiser trocar essa
cor, bastaria editar um arquivo, e a nova cor seria aplicada em todos os templates que
utilizassem essa variável. Orth (2004, p.88).
Para utilizar um arquivo de configuração em um template, deve-se carregá-lo com a
função config_load. Por exemplo:
{config_load file=”teste.conf”}
Algumas considerações em relação aos arquivos de configuração:
• Para incluir comentários nesses arquivos, procura-se utilizar o caracter # no início de
cada linha.
• Não é obrigatório o uso de aspas em torno dos valores das variáveis.
• Valores que ocupam mais de uma linha devem ser delimitados por aspas triplas (“””).
• É possível criar seções de variáveis, e posteriormente carregar apenas as seções
desejadas. O nome das seções deve estar entre ([ ]).
• As variáveis globais, definidas fora das seções, serão sempre carregadas quando o
arquivo for carregado.
• Se existir uma variável global e uma de seção com o mesmo nome, será considerada
a de seção.
• É possível ocultar outras variáveis ou seções inteiras. Isto é útil nos casos em que as
variáveis serão usadas apenas pelo programador, não interessando ao criador dos
templates (ex. informações sobre o banco de dados). Para ocultar variáveis ou seções,
acrescente um ponto(.) antes de seus nomes.
Esse arquivo deve estar no diretório “configs”, e para poder utilizar o valor dessas
variáveis no template, pode-se chamá-lo da seguinte forma:
{config_load file=“index.conf”}
33
Documentação
ou comentários
Diretório
configs
Variáveis de configuração
Documentação
ou comentários
Ex de variável vinda do
arq index.conf
HTML
Modificador de
Variável Smarty
Documentação
ou comentários
Diretório templates
Variável reservada
Smarty, exibe o
nome do servidor
No exemplo 3, também fica visível a separação dos códigos e funções Smarty bem
como sua documentação.
36
Variáveis PHP
carregadas
com valores do
banco de dados
PHP
HTML
PHP MIX DE
CÓDIGOS
!!!!!
HTML
SOMENTE
PHP
!!!!!
SOMENTE
SMARTY
!!!!!
NOVA FUNCIONALIDADE
O exemplo 8 demonstrará que a página PHP será muito mais simplificada enquanto o
template ficará com a parte pesada de programação visual.
Instancia-se
somente o form de
contato!
Caso necessite um ou outro ajuste o designer terá muito mais facilidade de atuar no
mesmo usando o arquivo de configuração, pois, algumas codificações como variáveis de
cores se repetem várias vezes e será necessário somente a alteração de uma única variável
no arquivo de configuração para alteração do visual do form. Praticamente, não haverá
mudanças internas do arquivo de template. A seguir, apresenta-se no exemplo 9, um
trecho do arquivo index.tpl que é o template gerador do formulário de contato onde o
mesmo recebe as variáveis vindas do arquivo index.php. No trecho da tag “select”,
essas variáveis fazem com que o formulário exiba o menu de estados e pode ser
alterado para exibir, por exemplo, somente siglas ao invés do nome dos estados
bastando alterar o valor de “output” para siglas, que também é variável disponível do
arquivo index.php.
Variáveis do arquivo de
configuração !
Gera o menu de
EXEMPLO 9 – Trecho do template de geração do form
estados no form !
43
6. CONCLUSÃO
7. REFERÊNCIAS BIBLIOGRÁFICAS
VILLA, Gustavo. Templates separam o PHP do design. Disponível via URL em:
http://phpbrasil.com/faqs/faq.php/id/1417. Acesso em: 11 de Novembro de 2004.
NIEDERAUER, Juliano. PHP para quem conhece PHP. 1.ed. São Paulo: Novatec, 1999.
SMARTY, Site. Is Smarty right for me? Disponível via URL em:
http://smarty.php.net/rightforme.php. Acesso em: 27 de Março de 2005.
8. ANEXOS
corFundo = #CCCC00
corTitulo = #FF0000
fonteFace = ARIAL
corTab = #EAEAEA
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body><font face="{#fonteFace#}">
<div align="center">
<table border="0" cellspacing="0" width="60%">
<tr>
<td width="50%" bgcolor="{#corTab#}">
<font size="5">Confira as últimas
notícias!</font>
</td>
<td width="50%" bgcolor="{#corTab#}">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<p align="left">
<font face="{#fonteFace#}" size="5">{$titulo}<br>
</body>
</html>
48
<?php
// ------ acesso ao banco de dados atraves do arquivo conexao.php ---------
-
require('conexao.php');
<?php
// ------ recebe identificação da notícia a ser exibida ----
$id_noticia = $_GET['id'];
<?php
$servidor = "localhost";
$base = "noticias";
$porta = "5432";
$usuario = "postgres";
$senha = "postgres";
if(!$con)
die("Erro na Conexão!!");
?>
cadastro de livros
<HTML><HEAD>
<TITLE>Guia de consulta de livros</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</HEAD>
<!------ Define cor de fundo da página -->
<BODY BGCOLOR="#0000FF">
<?php
// ------ acesso ao banco de dados ----------
require('conexao.php');
// ------ seleciona tabela de noticias -----------
$res = pg_query("select titulo,autor,paginas,preco from livros order
by titulo") or die("Query falhou");
de livros
<?php
$titulo = "Guia de consulta de livros";
livros
<html>
<head>
<title>{$titulo}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<table>
<tr bgcolor="#D6D6D6">
<td><b>Livros</b></td>
<td><b>Autores</b></td>
<td><b>Páginas</b></td>
<td><b>Valor R$</b></td>
</tr>
de livros
#variáveis globais
corFundo = #0000FF
corTitulo = #ffffff
fonteFace = arial
[Margens]
margemSuperior = 10
margemEsquerda = 10
cadastro de livros
<?php
$servidor = "localhost";
$base = "livros";
$porta = "5432";
$usuario = "postgres";
$senha = "postgres";
if(!$con)
die("Erro na Conexão!!");
?>
<?php
require('c:/php5/libs/Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('siglas', array('SP','RJ','SC','RS','MG'));
$smarty->assign('estados', array('São Paulo','Rio de Janeiro','Santa
Catarina','Rio Grande do Sul','Minas Gerais'));
$smarty->assign('inicial', 'MG');
$smarty->display('form_contato_menu.tpl');
?>
53
<!-- tag abaixo que envia o e-mail para o servidor onde localiza-se o
script que envia o email-->
<form action="/sys/formmail.php" method="POST">
<!-- variaveis abaixo : "para" "assunto" "retorno" essas são padrões -->
<input type='hidden' name='para' value='smarcilio@itelefonica.com.br'><!--
Aqui você deve colocar o e-mail de quem irá receber o e-mail-->
<input type='hidden' name='assunto' value='#-( Mensagem do Site )-#'> <!--
aqui é só o titulo do e-mail, quando chegar na sua caixa de mensagem terá
esse nome -->
<input type='hidden' name='retorno'
value='http://www.dms.eti.br/adm/sys/emailenviado.html'><!-- aqui é o
Feedback ou menssagem de retorno, conclusão etc.. coloque a url completa
!!! -->
<!-- variaveis acima: "para" "assunto" "retorno" essas são padroes -->
<div align="center">
<center>
<table border="1" width="549" height="47"
bordercolorlight="{#bdrcolorl#}" bordercolordark="{#bdrcolord#}"
cellspacing="0" cellpadding="0" style="background-color: #FFFFFF; border-
style: dotted; border-color: #66CCFF">
<tr>
<td width="549" height="47" bgcolor="{#bgcolor_topo#}"
bordercolorlight="{#bdrcolorl#}" bordercolordark="{#bdrcolord#}">
<p align="center"><font face="{#fonte#}" size="4"><b>Formulário de
Contato </b></font>
</td>
</tr>
<tr>
<td width="549" height="31" bgcolor="{#bgcolor_corpo#}"><b><font
size="2" face="{#fonte#}" color="#000080"> Nome:
<input type="text" name="nome" size="39"></font></b><font
color="#FF0000" size="1" face="{#fonte#}">(*)</font><b><font size="2"
face="{#fonte#}"
color="#000080"> </font></b></td>
</tr>
<tr>
<td width="549" height="41" bgcolor="{#bgcolor_corpo#}"><b><font
size="2" face="{#fonte#}" color="#000080"> E-mail:
<input type="text" name="email" size="39"> </font></b><font
color="#FF0000" size="1" face="{#fonte#}">(*)</font></td>
</tr>
<tr>
<td width="549" height="1" bgcolor="{#bgcolor_corpo#}"><b><font
size="2" face="{#fonte#}" color="#000080"> Telefone:
<input type="text" name="telefone" size="20"> </font></b><font
color="#FF0000" size="1" face="{#fonte#}">(*)</font></td>
</tr>
<tr>
<td width="549" height="1" bgcolor="{#bgcolor_corpo#}"><b><font
size="2" face="{#fonte#}" color="#000080"> Estado:
54
<select name="estado">
{html_options values=$siglas output=$estados
selected=$inicial}
</select>
</tr>
<tr>
<td width="549" height="1" valign="bottom"
bgcolor="{#bgcolor_corpo#}"><b><font size="2" face="{#fonte#}"><font
color="#800080">Mensagem:</font><textarea rows="3" name="mensagem"
cols="64"></textarea></font></b><font color="#FF0000" size="1"
face="{#fonte#}">(*)</font>
<p align="center"><font size="1" face="{#fonte#}"
color="#800000">Os
campos com</font><font color="#FF0000" size="1" face="{#fonte#}">
(*) </font><font color="#800000"><font size="1" face="{#fonte#}">são
</font><font size="1"
face="{#fonte#}">obrigatórios</font></font></td>
</tr>
</center>
<tr>
<td width="549" height="47" bgcolor="{#bgcolor_corpo#}">
<p align="center"> <input type="submit"
value="Enviar" name="B1" style="background-color: #D2E9F9; border-style:
solid; border-color:
#99CCFF">
<input type="reset" value="Limpar" name="B1" style="background-color:
#FF4A4A; border-style: solid; border-color: #FF9999">
</td></tr></table></div></form>
# variáveis globais
[estilo]
bgcolor_topo = #99CCFF
bgcolor_corpo = #F4FAFF
bdrcolorl = #F0F0FF
bdrcolord = #FFFFFF
fonte = arial