Ah oui, c'est vrai j'ai oublié les "var" pour déclarer les variables de la classe.
C'est parce que j'avais commencé ça en php5, et je les avais déclarée en public, puis finalement ça servait à rien...
Donc, en espérant que je peux poster toute la source ici:
<?
class Template
{
var $send_vars; // Tableau qui contient les variables à envoyer au template.
var $page_source; // Source du tpl. Puis par la suite celà deviendra la source finale de la page.
var $tpl_vars; // Variables du fichier template (celles qui sont définies entre accolades{} )
function templatisation($tpl_addr)
{
// Ouverture du fichier template
file_exists($tpl_addr) ? $this->page_source=file_get_contents($tpl_addr) : die("Ficher Template introuvable");
//Isolation des variables template
preg_match_all("`\{([^}]+)\}`",$this->page_source,$this->tpl_vars,PREG_PATTERN_ORDER);
// Remplacement des variables tpl par leur alias dans le tableau $send_vars
foreach ($this->tpl_vars[1] as $current_tpl_var)
{
$this->page_source=str_replace("{".$current_tpl_var."}",$this->send_vars[$current_tpl_var],$this->page_source);
}
return $this->page_source;
}
}
?>
C'est vrai que la methode en utilisant include doit être plus performante, c'est plus direct....
Seulement entre la recherche d'une expression régulière dans un fichier tpl, et le traitement d'un fichier php inclus en fin de page, je ne sais pas quel est le plus performant....
Par contre le traitement des boucles, c'est un truc qui peut déjà se faire côté php avant de charger les variables:
ex: for ($i=0;$i<10;$i++)
{
$template->send_vars['TRUC'].="Machin truc
";
}
Remarque c'est une bonne idée mais ça signifierait inventer un système de boucle dans la template? Finalement une boucle php serait plus simple et plus rapide....
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 9 avril 2005 à 12:55
Salut,
perso je préfère le bon vieux système de l'include situé en fin de page avec des variables à remplacer, qui reste plus performant.
Ton système serait pas mal si tu implémentais une gestion des boucles dans ta template.
a +
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 avril 2005 à 12:38
Hello,
pour declarer un membre a ta classe, normalement, on ecrit :
var $send_vars;
Je ne l'ai pas testee...tu es sur qu'elle marche en l'etat ?
Argh, je ne sais pas si c'est pareil chez vous mais la moitié des lignes sont mangées par la page...
Il manque des bouts de codes si la ligne dépasse un peu..
9 avril 2005 à 17:22
En plus je viens de merendre compte que les templates peuvent gérer bien plus de chose que ça:
http://www.bertrand-soulier.com/php/tutoriaux/template1.php
Bon du coup je peux l'annoncer officiellement: mon script ne sert à rien :-D
Bah au moins j'aurais appris des trucs :-)
9 avril 2005 à 17:00
Par contre l'include est plus performant (et de loin) que le parsing avec expression régulière ;-)
a+
9 avril 2005 à 15:51
C'est parce que j'avais commencé ça en php5, et je les avais déclarée en public, puis finalement ça servait à rien...
Donc, en espérant que je peux poster toute la source ici:
<?
class Template
{
var $send_vars; // Tableau qui contient les variables à envoyer au template.
var $page_source; // Source du tpl. Puis par la suite celà deviendra la source finale de la page.
var $tpl_vars; // Variables du fichier template (celles qui sont définies entre accolades{} )
function templatisation($tpl_addr)
{
// Ouverture du fichier template
file_exists($tpl_addr) ? $this->page_source=file_get_contents($tpl_addr) : die("Ficher Template introuvable");
//Isolation des variables template
preg_match_all("`\{([^}]+)\}`",$this->page_source,$this->tpl_vars,PREG_PATTERN_ORDER);
// Remplacement des variables tpl par leur alias dans le tableau $send_vars
foreach ($this->tpl_vars[1] as $current_tpl_var)
{
$this->page_source=str_replace("{".$current_tpl_var."}",$this->send_vars[$current_tpl_var],$this->page_source);
}
return $this->page_source;
}
}
?>
C'est vrai que la methode en utilisant include doit être plus performante, c'est plus direct....
Seulement entre la recherche d'une expression régulière dans un fichier tpl, et le traitement d'un fichier php inclus en fin de page, je ne sais pas quel est le plus performant....
Par contre le traitement des boucles, c'est un truc qui peut déjà se faire côté php avant de charger les variables:
ex: for ($i=0;$i<10;$i++)
{
$template->send_vars['TRUC'].="Machin truc
";
}
Remarque c'est une bonne idée mais ça signifierait inventer un système de boucle dans la template? Finalement une boucle php serait plus simple et plus rapide....
9 avril 2005 à 12:55
perso je préfère le bon vieux système de l'include situé en fin de page avec des variables à remplacer, qui reste plus performant.
Ton système serait pas mal si tu implémentais une gestion des boucles dans ta template.
a +
9 avril 2005 à 12:38
pour declarer un membre a ta classe, normalement, on ecrit :
var $send_vars;
Je ne l'ai pas testee...tu es sur qu'elle marche en l'etat ?
Sinon, rien a redire :-)
9 avril 2005 à 04:32
Il manque des bouts de codes si la ligne dépasse un peu..