mirror of
https://github.com/smarty-php/smarty.git
synced 2025-11-02 21:31:48 +01:00
65 lines
4.5 KiB
XML
65 lines
4.5 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision$ -->
|
|
<!-- PTBR-Revision: 1.4 Maintainer: thomasgm Status: ready -->
|
|
<preface id="preface">
|
|
<title>Prefácio</title>
|
|
<para>
|
|
Esta é sem dúvida uma das perguntas mais freqüentes nas listas de discussões sobre PHP:
|
|
como eu faço meus scripts em PHP independentes do layout? O PHP é vendido como sendo uma
|
|
"linguagem de script embutida no HTML", após escrever alguns projetos que misturam HTML e
|
|
PHP naturalmente vem uma idéia de que a separação da forma e conteúdo é uma boa prática [TM].
|
|
Além disso, em muitas empresas os papéis de designer e programador são separados.
|
|
Conseqüentemente, a busca por um sistema de templates continua.
|
|
</para>
|
|
<para>
|
|
Na nossa empresa por exemplo, o desenvolvimento de uma aplicação é feito da seguinte
|
|
maneira: Após a documentação necessária estar pronta, o designer faz o esboço da interface
|
|
e entrega ao programador. O programador implementa as regras de negócio no PHP e usa o
|
|
esboço da interface para criar o esqueleto dos templates. O projeto então está nas mãos
|
|
da pessoa responsável pelo layout HTML da página que então transforma o esboço em um layout
|
|
realmente funcional. O projeto talvez vá e volte entre programação/designer HTML várias vezes.
|
|
Porém, é importante ter um bom suporte à templates porque os programadores não querem ter que
|
|
ficar mexendo com HTML e não querem que os designers estraguem seus códigos PHP. Os designers
|
|
precisam de ajuda para alterar os arquivos de configuração, blocos dinâmicos e outros
|
|
problemas relacionados à interface usada, mas eles não querem ocupar-se com as complexidades
|
|
da linguagem de programação PHP.
|
|
</para>
|
|
<para>
|
|
Analisando muitas das soluções de templates disponíveis para PHP hoje em dia, a
|
|
maioria somente disponibilizada uma forma rudimentar de substituição de variáveis
|
|
dentro dos templates e trabalham de forma limitada com as funcionalidades dos blocos
|
|
dinâmicos. Mas nossas necessidades necessitam de um pouco mais do que isso. Nós não
|
|
queríamos que programadores mexendo com layout em HTML, mas isso é praticamente inevitável.
|
|
Por exemplo, se um designer quiser que as cores de fundo se alternam em blocos dinâmicos,
|
|
isso tem que ser feito pelo programador antecipadamente. Nós também precisamos que os designers
|
|
possam usar seus próprios arquivos de configuração, e usar as variáveis definidas nestes arquivos
|
|
em seus templates. E a lista de necessidades continua...
|
|
</para>
|
|
<para>
|
|
Nós começamos à escrever as especificações para um sistema de templates por volta de 1999.
|
|
Após o término das especificações, nós começamos a escrever um sistema de template em C
|
|
que esperávamos ser aceito para rodar com o PHP. Não só esbarramos em muitas barreiras
|
|
técnicas, como também houve um enorme debate sobre o que exatamente um sistema de template
|
|
deveria ou não fazer. À partir desta experiência, nós decidimos que o sistema de template
|
|
fosse escrito para ser uma classe do PHP, para que qualquer um usa-se da forma que lhe fosse
|
|
mais conveniente, então nós escrevemos um sistema que fazia exatamente, foi aí que surgiu o
|
|
<productname>SmartTemplate</productname> (obs: esta classe nunca foi enviada ao público).
|
|
Foi uma classe que fez quase tudo que nós queríamos: substituição de variáveis, suporte à
|
|
inclusão de outros templates, integração com arquivos de configuração, código PHP embutido,
|
|
funcionalidades 'if' limitada e blocos dinâmicos muito mais robustos que poderiam ser aninhados
|
|
muitas vezes. Foi tudo feito usando expressões reguladores e códigos confusos, como diríamos,
|
|
impenetrável. Era um sistema também extremamente lento em grandes aplicativos por causa de todo
|
|
o trabalho que era feito pelas expressões regulares e o 'parsing'(interpretação) em cada chamada
|
|
ao aplicativo. O maior problema do ponto de vista de um programador foi o espantoso trabalho que
|
|
era necessário para configurar e processar os blocos dinâmicos dos templates. Como faríamos
|
|
esse sistema ser simples de usar?
|
|
</para>
|
|
<para>
|
|
Foi então que veio a visão do que hoje é conhecido como Smarty. Nós sabemos o quão
|
|
rápido é um código PHP sem o sobrecarregamento de um sistema de templates. Nós também
|
|
sabemos quão meticuloso e assustador é a linguagem PHP aos olhos de um designer atual,
|
|
e isso tudo poderia ser mascarado usando uma sintaxe simples nos templates. Então o que
|
|
acontece se nós combinarmos essas duas forças? Assim, nasceu o Smarty...
|
|
</para>
|
|
</preface>
|