Organizando projetos com a classe FastTemplate (parte 2)

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.

[ Hits: 23.334 ]

Por: Fábio Berbert de Paula em 19/11/2002 | Blog: https://fabio.automatizando.dev


Parte 2 - Quantidade indefinida de variáveis



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

$model->parse('OUTPUT','pagina');
$model->FastPrint('OUTPUT');
?>
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Parte 1 - Script com duas caras
   3. Parte 2 - Quantidade indefinida de variáveis
   4. Parte 3 - Quantidade indefinida de variáveis
Outros artigos deste autor

Tags automáticas em URLs com a classe urlmatch da PHP

Usando o "at" para agendamento de tarefas

Clicador automático de Tinder com Python

Assumindo o controle do teu Android com ADB

Como baixar vídeos do Facebook via terminal

Leitura recomendada

Criando um ambiente de desenvolvimento web livre com Eclipse e PHP

Aumente sua produção em PHP

Relatórios com PHP e XSLT - Conceitos iniciais e utilização básica

Administrando usuários no GNU/Linux e Samba via web com PHP

Organizando projetos com a classe FastTemplate (parte 1)

  
Comentários
[1] Comentário enviado por guilhermejr em 14/01/2003 - 11:42h

Aqui ta dando sempre o mesmo erro
Warning: Invalid content of \{\} in /usr/share/php/class.FastTemplate.php3 on line 213
que erro é esse?

[2] Comentário enviado por fabio em 15/01/2003 - 10:36h

Não sei, deve ser algum erro de variável no seu código. Se quiser manda ele para meu e-mail: fabio@vivaolinux.com.br

[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?

[]'s

[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

[]'s

[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?

Abraço

[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

http://tonda.czechit.net/2007/07/fasttemplates-optimized-for-php5.html

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


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts