Você se depara com a criação de um site criado por um programador (provavelmente você) e um designer? Você não sabe como facilitar o trabalho para vocês dois? Deixe-me dar a resposta: use FastTemplate para tornar seu site mais fácil de personalizar!
Ok, você deve estar se perguntando por que deveria usar FastTemplates.
· Pode mudar a aparência de todo o seu site em segundos · Programação abstrata, sem código HTML inútil · Os designers não precisam se preocupar com todo o código "obscuro" · Surpreendentemente rápido · Mais fácil de reutilizar modelos antigos (vs. formulário normal)
FastTemplate é derivado de um pacote Perl de mesmo nome (que pode ser encontrado no CPAN). Você pode baixar a versão PHP de sua página inicial (o endereço de download deste site é: http://www.phpe.net/downloads/1.shtml). Você só precisa de um dos arquivos de classe (class.FastTemplate.php).
Deixe-me primeiro explicar a diferença entre usar um modelo para gerar uma página e simplesmente ecoá-la ou imprimi-la.
Simplesmente usar o método echo/print é ótimo para escrever scripts curtos, mas não ajuda com melhor organização e personalização. Os modelos, por outro lado, oferecem a capacidade de criar sites multilíngues apenas alterando um parâmetro. Eles podem pressioná-lo a se preocupar mais com o que você precisa fazer.
Não tenha medo de pensar antes de começar a programar. Pode levar algum tempo, mas o custo será compensado à medida que o projeto crescer.
Então, como aplicar o FastTemplate? Primeiro você precisa fazer uma chamada simples:
<?php $tpl=new FastTemplate ("path");
?>
Passe um caminho para o diretório onde todos os seus arquivos de modelo estão armazenados. Ele retorna um objeto, que você pode usar para atribuição de parâmetros, geração de páginas, etc.
FastTemplate baseia-se na suposição de que uma página grande é composta de muitas partes pequenas. Cada parte tem um nome exclusivo. A menor parte é atribuí-lo a uma sequência de texto normal com um nome exclusivo. Isso pode ser feito via <?php
$tpl->assign(NOME, "texto");
?>
para completar. Agora, se um dos seus modelos contém {NAME}, FastTemplate conhece sua intenção.
Além disso, FastTemplate precisa saber como você deseja chamar seu modelo. Você precisa passar um array associativo (associativo
array) para <?php $tpl->define() ?>
Venha dar uma dica.
<?php
$tpl->define(array(foo => "foo.tpl",
barra => "bar.tpl"));
?>
Essas atribuições fornecerão foo e bar arquivos respectivamente diferentes (chamados foo.tpl e bar.tpl).
Agora você deseja que o FastTemplate substitua todos os {MACROS} no modelo foo pelos valores correspondentes. Ao emitir o comando
<?php
$tpl->parse(PAGECONTENT, "foo");
?>
para alcançar. Este comando atribuirá o conteúdo do modelo “foo” a PAGECONTENT. Claro, ainda não terminamos, porque a barra de modelo é a definição da página principal e o FastTemplate precisa substituí-la.
Macro {PAGECONTENT}. Também precisamos atribuir um valor a PAGETITLE, como segue: <?php
$tpl->assign(PAGETITLE, "Teste FooBar");
$tpl->parse(MAIN, "barra");
?>
Fácil, não é? Só precisamos gerar agora: <?php
$tpl->FastPrint(PRINCIPAL);
?>
Os três arquivos a seguir mostram descrições mais detalhadas dos exercícios reais. Não sei como viver sem essa tecnologia na vida real...
Seus designers ficarão felizes e seu chefe sorrirá porque você pode fazer mais em menos tempo.
bar.tpl <!-- bar.tpl -->
<HTML>
<HEAD><TITLE>Mundo dos recursos - {PAGETITLE}</TITLE></HEAD>
<BODY BGCOLOR=TEXTO PRETO=BRANCO>
<H1>{PAGETITLE}</H1>
{PAGECONTENT}
</BODY>
</HTML>
foo.tpl <!-- foo.tpl -->
É evidente que nada foi feito. Consulte {NOME}.
demo.php3 <?php
inclua "class.FastTemplate.php3";
$tpl = new FastTemplate( ".");
$tpl->define(array(foo => "foo.tpl", bar => "bar.tpl"))
;
$tpl->assign(PAGETITLE, "Bem-vindo!");
$tpl->parse(PAGECONTENT, "foo");
$tpl->parse(MAIN, "barra");
$tpl->FastPrint(MAIN);
?>
Criando uma tabela inteira Também escrevi um pequeno exemplo para demonstrar como gerar uma tabela inteira a partir de um modelo de linha única. É eficiente porque você ainda não precisa modificar o documento HTML diretamente.
Criamos uma tabela HTML anexando o conteúdo de um modelo a um nome exclusivo já definido. Isso pode ser feito ligando
Quando $tpl->parse(), adicione um "." antes do nome do modelo para conseguir isso. <?php
//Atribuir o conteúdo do template foo ao TPL1
$tpl->parse(TPL1, "foo");
// Anexa o conteúdo da barra de template após TPL1
$tpl->parse(TPL1, ".bar");
?>
página.tpl
<HTML>
<HEAD><TITLE>Mundo dos recursos - {PAGE_TITLE}</TITLE></HEAD>
<BODY BGCOLOR=TEXTO PRETO=BRANCO>
<H1>{PAGE_TITLE}</H1>
{PAGE_CONTENT}
</BODY>
</HTML>
tabela.tpl
<TABLE>
<TR> <TH>nome</TH> <TH>tamanho</TH> </TR>
{TABLE_ROWS}
</TABLE>
tabela_row.tpl
<TR>
<TD>{NOME DO ARQUIVO}</TD>
<TD>{FILESIZE}</TD>
</TR>
yad.php3
<?php
inclua "class.FastTemplate.php3";
função InitializeTemplates() {
global $tpl;
$tpl = new FastTemplate( ".");
$tpl->define(array(página => "página.tpl",
tabela => "tabela.tpl",
linha_tabela => "linha_tabela.tpl" ));
}
função ReadCurrentDirectory() {
global $tpl;
$handle = opendir( ".");
while($nomedoarquivo = readdir($handle)) {
$tpl->assign(FILENAME, $filename);
$tpl->assign(FILESIZE, tamanho do arquivo($nome do arquivo));
$tpl->parse(TABLE_ROWS, ".table_row");
}
fechadoir($handle);
$tpl->parse(PAGE_CONTENT, "tabela");
}
function PrintPage($título) {
global $tpl;
$tpl->atribuir(PAGE_TITLE, $título);
$tpl->parse(FINAL, "página");
$tpl->FastPrint(FINAL);
}
InitializeTemplates();
ReadCurrentDirectory();
Printpage("Mais uma demonstração");
?>
Discussão sobre velocidade
"Ok", você pode estar dizendo: "Tudo isso é ótimo. Mas isso não afetará a velocidade do meu site?
Não, seu site provavelmente ficará mais rápido?
"Uma razão simples: como você, como programador, se preocupa em projetar seu aplicativo e escrever código, seu código será mais eficiente, lidando com as mesmas tarefas de maneira mais fácil e rápida. Portanto, você pode adicionar outro motivo à lista de motivos listados acima para considerar o uso do FastTemplate em seu projeto.
Se você deseja apenas converter um site existente, o sucesso do desempenho pode não ser percebido. Eu recomendo usar buffer de regex em PHP, vai ajudar nessa situação. Como o FastTemplate usa expressões regulares para cada macro, cada expressão regular será compilada apenas uma vez e o impacto na velocidade será insignificante.