Usando a função eval
Para começar você deve decidir se vai criar uma pasta para guardar seus templates, ou se vai deixar seus templates (*.tpl) na mesma pasta que se encontra os scripts que usarão o template.
Decidido isso, vamos mostrar um exemplo simples de template chamado: index.tpl
Explicando o index.tpl
- a tag <title>$titulo</title> vai receber a variável $titulo que será definida no script php que vai usar este template (neste artigo como exemplo seria o script index.php), e vai por o valor da variável $titulo no título, através das tags <title></title>.
- a variável $body também receberá o valor definido pelo script php que vai usar este template (neste artigo como exemplo seria o script index.php) e irá imprimir o valor da variável dentro das tags <body></body>, ou seja, o que você irá ver na página!
Agora vamos criar o script php que usará o template criado anteriormente, digamos que seja: index.php
Esse é o meu primeiro script php usando o sistema de templates eval. ";
define("INDEX", addslashes(implode("", file ("index.tpl"))));
$template=INDEX;
eval("\$pag= \"$template\";");
echo $pag;
?>
<!-- fim -->
Explicando o index.php
- a variável $titulo definida como "Sistema de Templates - eval" e a variável $body definida como "Esse é o meu primeiro script php usando o sistema de templates eval. " serão enviadas ao template do index.php (neste artigo como exemplo seria o template index.tpl).
- define("INDEX", addslashes(implode("", file ("index.tpl")))); Esta linha define INDEX com o arquivo template já tratado para ser utilizado pela função eval().
- $template=INDEX; A variável $template recebe o valor de INDEX para que seja utilizada na função eval() propriamente dita.
- eval("\$pag= \"$template\";"); A função eval() seta a variável $pag já com o template com todos os valores definidos pelo script php.
- echo $pag; Imprime a variável $pag que agora é o template + as variáveis, logo, a página completa.
Bem, espero ter acrescentado um pouco mais de conhecimento para vocês iniciantes ou não, achei essa função interessante e bem simples, a vi em algum lugar e começei a usar, como está sendo muito útil para mim que sou iniciante, espero que seja útil para você também.
Bem, esse é meu primeiro artigo, qualquer dúvida, crítica ou sugestão por favor, comentem. É claro algum erro que encontrarem, me avisem para que eu verifique.
Obrigado,
Thiago Fraga
thiaguimphp@yahoo.com.br
Decidido isso, vamos mostrar um exemplo simples de template chamado: index.tpl
<!-- início --> <html> <head> <title>$titulo</title> </head> <body> $body </body> </html> <!-- fim -->
Explicando o index.tpl
- a tag <title>$titulo</title> vai receber a variável $titulo que será definida no script php que vai usar este template (neste artigo como exemplo seria o script index.php), e vai por o valor da variável $titulo no título, através das tags <title></title>.
- a variável $body também receberá o valor definido pelo script php que vai usar este template (neste artigo como exemplo seria o script index.php) e irá imprimir o valor da variável dentro das tags <body></body>, ou seja, o que você irá ver na página!
Agora vamos criar o script php que usará o template criado anteriormente, digamos que seja: index.php
<!-- início --> <?php $titulo = "Sistema de Templates - eval"; $body = "
Explicando o index.php
- a variável $titulo definida como "Sistema de Templates - eval" e a variável $body definida como "
- define("INDEX", addslashes(implode("", file ("index.tpl")))); Esta linha define INDEX com o arquivo template já tratado para ser utilizado pela função eval().
- $template=INDEX; A variável $template recebe o valor de INDEX para que seja utilizada na função eval() propriamente dita.
- eval("\$pag= \"$template\";"); A função eval() seta a variável $pag já com o template com todos os valores definidos pelo script php.
- echo $pag; Imprime a variável $pag que agora é o template + as variáveis, logo, a página completa.
Bem, espero ter acrescentado um pouco mais de conhecimento para vocês iniciantes ou não, achei essa função interessante e bem simples, a vi em algum lugar e começei a usar, como está sendo muito útil para mim que sou iniciante, espero que seja útil para você também.
Bem, esse é meu primeiro artigo, qualquer dúvida, crítica ou sugestão por favor, comentem. É claro algum erro que encontrarem, me avisem para que eu verifique.
Obrigado,
Thiago Fraga
thiaguimphp@yahoo.com.br
Uma boa alternativa ali seria não usar a eval()... :)
Quando você usa a eval pra fazer esse tipo de operação, você sugeita o seu script a vários erros e expõe ele a códigos estranhos.
Se você tiver um outro script dentro do seu template, como algo em JavaScript, por exemplo, que, em diversos casos, apresenta "}", "{" e "$" no meio do código. Nesse caso a sua função eval() vai ter sérios problemas.
Por experiência própria, o mais "correto" a se fazer é usar um tipo de função de substituição, como a str_replace() ou a preg_replace(), para montar o seu sistema de templates. Ele vai ficar mais seguro e, até onde pude perceber, até mais rápido.
[]'s, Error404
Quando você usa a eval pra fazer esse tipo de operação, você sugeita o seu script a vários erros e expõe ele a códigos estranhos.
Se você tiver um outro script dentro do seu template, como algo em JavaScript, por exemplo, que, em diversos casos, apresenta "}", "{" e "$" no meio do código. Nesse caso a sua função eval() vai ter sérios problemas.
Por experiência própria, o mais "correto" a se fazer é usar um tipo de função de substituição, como a str_replace() ou a preg_replace(), para montar o seu sistema de templates. Ele vai ficar mais seguro e, até onde pude perceber, até mais rápido.
[]'s, Error404
18/11/2005 7:04pm
(~19 anos atrás)
poderia, caro amigo, me dizer qual seria a MELHOR opção, mas usando esse sistema, que eu tb como leigo e iniciante, achei excelente?
18/11/2005 1:35pm
(~19 anos atrás)
Complementando o que o Felipe Lopes já disse, também há o uso completamente fora de contexto da função file() em conjunto com a implode(). É realmente um dos piores jeitos de realizar isso.
O sistema também está sujeito a algumas falhas de processamento.
Eu aconselharia aos iniciantes não se basearem nesse artigo completamente para a utilização de templates. O conceito é bom, sim, mas tem muito chão pela frente antes que possamos chamar esse sistema postado pelo amigo Thiago de confiável. :)
O sistema também está sujeito a algumas falhas de processamento.
Eu aconselharia aos iniciantes não se basearem nesse artigo completamente para a utilização de templates. O conceito é bom, sim, mas tem muito chão pela frente antes que possamos chamar esse sistema postado pelo amigo Thiago de confiável. :)
18/12/2004 10:13am
(~20 anos atrás)
Não entendi o define....pq jah naum atribui o valor direto pra $template sem usar o define??
10/12/2004 9:51am
(~20 anos atrás)
Muito bom esse artigo...
resumido e bem explicado para iniciantes como eu!!
parabens!
resumido e bem explicado para iniciantes como eu!!
parabens!
06/12/2004 1:11am
(~20 anos atrás)
Para quem está começando, fica difícil saber o que usar, qdo começei não sabia dos templates, e me confundia muito nos códigos...depois q tive q fazer uma alteração em um site, vi como fazia falta um template.
Fica a minha dica de utilizar sim os templates, vc vai aprender a organizar seus códigos e vai ficar muito mais fácil de trabalhar quando tiver q fazer alterações.
Dêem uma olhada tb no http://smarty.php.net/
Thiago, valeu pelo artigo
Falow!!!
André
Fica a minha dica de utilizar sim os templates, vc vai aprender a organizar seus códigos e vai ficar muito mais fácil de trabalhar quando tiver q fazer alterações.
Dêem uma olhada tb no http://smarty.php.net/
Thiago, valeu pelo artigo
Falow!!!
André
10/11/2004 1:11pm
(~20 anos atrás)
como está demonstrado no código, é usado addslashes no texto vindo do arquivo, e na chamada do eval, está usando "" no texto. Portanto mesmo que tenha {, }, chamadas a funções do php e tal... isto tudo será tratado como string. Não interferindo na execução.
Falou,
Fabrício