Files
smarty/docs/pt_BR/preface.xml
2004-10-02 12:49:29 +00:00

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>