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.512 ]

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

Instalando um sistema tradutor de línguas no seu Linux

Criando um sistema de banners rotativos em PHP

Tradutor de palavras em vários idiomas via shell

Como baixar fotos e vídeos do Instagram com Python

Organizando projetos com a classe FastTemplate (parte 1)

Leitura recomendada

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

Método de Newton e PHP

Organizando projetos com a classe FastTemplate (parte 1)

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

PHP5 Orientado a Objetos: Visibilidade, herança e extensões de classes

  
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