Neste artigo nos aprofundaremos em conceitos sobre programação organizada e treinaremos de forma prática o uso da classe FastTemplate em situações mais complexas envolvendo criação de páginas a partir de modelos HTML.
Outra situação muito comum na programação com uso de modelos é o uso de quantidade indefinida de variáveis. Uma vez que você busca dados a partir de uma tabela de banco de dados, não se pode prever o número de registros serão retornados ao seu script, daí surge a necessidade do uso de um modelo duplo, ou seja, um modelo para a parte estática do HTML e outro para a parte indefinida (dinâmica).
No exemplo ilustrado neste artigo, vamos definir um array com alguns elementos, já que a conexão com o banco de dados tornaria nossa leitura mais complexa e prolongada. Faremos de conta que este array foi obtido a partir de consultas ao seu banco de dados favorito, ok ?
<!-- modeloDuplo.php --> <? include 'class.FastTemplate.php3'; // carregar classe
$model = new FastTemplate('./modelos'); // repositório de modelos
$model -> define ( array ( 'pagina' => 'modeloDuplo.html', 'linhas' => 'itemModeloDuplo.html' ) ); // definimos um modelo para a parte estática e outro que será // processado para cada linha de um vetor
$vetorFazDeConta = array ( "Fábio B. de Paula" => "fabio@vivaolinux.com.br", "Zé Menino da Lagoa" => "zemenino@vivaolinux.com.br", "Florentina de Jesus" => "florentina@vivaolinux.com.br", "Marcolino Pão-e-Vinho" => "marcolino@vivaolinux.com.br" );
reset($vetorFazDeConta); while ( list($nome,$email) = each($vetorFazDeConta) ) { $model->assign('{NOME}',$nome); // as variáveis {NOME} e {EMAIL} estarão $model->assign('{EMAIL}',$email); // definidas no modelo que executa uma vez // para cada linha do vetor
$model->parse('{LINHAS}','.linhas'); // a variável {LINHAS} aparecerá no modelo estático do HTML e será substituído // pela concatenação de cada processamento sobre o handle ".linhas". Note que // existe um '.' antes do nome do handle, para dizer ao FastTemplate que este // processamento trata-se de uma concatenação }
$model->assign('Organizando projetos com a classe FastTemplate (parte 2)','Exemplo de modelo dinâmico do FastTemplate'); // a variável Organizando projetos com a classe FastTemplate (parte 2) é estática e está no modelo estático
[3] Comentário enviado por redstyle em 19/07/2004 - 02:49h
O que não intendi é o seguinte:
Então quando o navegador da pessoa chamar a página ./modelos/exibirDados.html ele vai chamar o arquivo templateMultiFace.php para substituir as ocorrências de {NOME} etc?
Ou tudo que é processado dentro do diretório ./modelos vai chamar a chasse templateMultiFace.php
Se for isso então o arquivo templateMultiFace.php será muito grande caso tiver que mudar muitas variáveis?
[4] Comentário enviado por jllucca em 02/09/2004 - 23:11h
Redstyle,
não e não. Quando voce acessa o templateMultiFace.php ele vai alterar o {NOME} que esta em ./modelos/exibirDados.html. Mas, se tu chamar o exibirDados nada vai ocorrer. Porque voce estara vendo somente o template.
O diretorio ./modelos nunca chama o PHP, o que ocorre é o contrario. O arquivo PHP que utiliza os arquivos de ./modelos.
Sobre o PHP, crescer conforme vai se tendo mais variaveis é a realidade :) hehehe
[5] Comentário enviado por removido em 22/12/2005 - 11:48h
Olá,
Muito bom esse artigo. Com certeza vou usar.
O único problema é que não vi como destroi-se os objetos que instancio nos meus códigos PHP. Eu, por exemplo, já tive inúmeros problemas de estouro de memória utilizando esse recurso. Me parece que o PHP, até a versão que eu conhecia, não oferecia um suporte muito consistente para esse gerenciamento. Alguém sabe se isso mudou?
[6] Comentário enviado por wilbil em 26/01/2008 - 12:26h
e ai galera para quem como eu estava sofrendo com o projeto ja pençando em arrumar a classe do fasttemplate por conta própria achei um site que tem a classe arrumada para php5
vamos la agradeçam ao cara eu fui o primeiro ele merece
falo isso pois tem uma empresa onde trabalho que foram varios projetos
e o principal com 7 anos de desenvolvimento imagina migrar tudo isso
falow
t+
falow fabio faz tempo que não nos falamos mas e correria