le 23/02/2005 à 10:38
eljam
Voici une classe template que j'ai fait toute simple.
Template_class.php:
Le problème est que je ne peux qu'afficher des variables, et j'aimerai pouvoir prendre le code de tout une page pour l'assigné à une valeur.
index.php:
Voici le code de template.php:
Template_class.php:
<?php class template
{
function template ($chemin){
$modele = @fopen ($chemin, 'r');
$this->content = @fread ($modele, @filesize ($chemin));
@fclose ($modele);
}
function assign ($field, $value){
$this->fields[$field] = $value;
}
function parse (){
foreach ($this->fields as $key => $value){
$result = ereg_replace ("{".$key."}", $value,$this->content);
$this->content = $result;
}
}
function display (){
echo $this->content;
}
}?>
Le problème est que je ne peux qu'afficher des variables, et j'aimerai pouvoir prendre le code de tout une page pour l'assigné à une valeur.
index.php:
<?php
require ("template_class.php");
$test="bonjour";
// Création d'une nouvelle instance de la classe et définition d'un gabarit
$tpl = new template ("template.php");
// Initialisation des variables du gabarit
$tpl->assign ("TITRE", "Test de notre classe.");
$tpl->assign ("TITRETEXTE", "Mon article");
$tpl->assign ("ARTICLE", "$test");
// Analyse du template
$tpl->parse ();
// Affichage du résultat
$tpl->display();
?>
Voici le code de template.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>{TITRE}</title>
</head>
<body>
<table border="1">
<tr>
<td>{TITRETEXTE}</td>
</tr>
<tr>
<td>{ARTICLE}</td>
<tr>
</table>
</body>
</html>