begin process at 2012 05 27 22:19:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CLASSE POUR LES TEMPLATES TOUTE SIMPLE

CLASSE POUR LES TEMPLATES TOUTE SIMPLE


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Débutant Date de création :17/07/2004 Date de mise à jour :23/07/2004 15:22:40 Vu / téléchargé :4 740 / 399

Auteur : lumesh

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Bon encore une classe pour gérer des templates.
Elle marche vraiment bien et je l'utilise dans tous mes portails maintenant.

Source

  • // template.inc
  • <?php
  • /*
  • ############################################################
  • # Auteur: LEMOINE Christophe #
  • # Date: 16 juillet 2004 #
  • # Version: 1.0 #
  • # Description: Moteur de template #
  • ############################################################
  • */
  • class Template
  • {
  • // Chemin du dossier où se trouve les fichiers du template
  • var $root = ".";
  • // spécifie si le mode de debuggage est actif
  • var $debug = true;
  • // spécifie si le script PHP arrete le chargement a chaque erreur
  • var $stop = true;
  • // mémorise le dernier message d'erreur
  • var $lasterror = "";
  • // mémorise les variables à parser ainsi que leur valeurs
  • var $variables = array();
  • // définit les groupes de variables à mémoriser
  • var $group = array();
  • // mémorise les fichiers appartenant à chaque bloc
  • var $files = array();
  • // sorties générales du contenu
  • var $output = "";
  • // initialise le moteur de template
  • function Template($root = ".")
  • {
  • $d = @dir($root);
  • if ($d)
  • {
  • $d->close();
  • unset($d);
  • if (substr($root, strlen($root) - 1, 1) != "/")
  • {
  • $root .= "/";
  • }
  • $this->root = $root;
  • $this->output = "";
  • }
  • else
  • {
  • $this->halt("Le dossier racine est incorrect !");
  • }
  • }
  • // définit un nouveau bloc
  • function set_block($name, $fil)
  • {
  • if (!isset($name))
  • {
  • $this->halt("Nom de bloc incorrect !");
  • }
  • else
  • {
  • if (!file_exists($this->root.$fil))
  • {
  • $this->halt("Le fichier template n'éxiste pas !");
  • }
  • else
  • {
  • $this->group[$name] = "";
  • $this->files[$name] = $this->root.$fil;
  • $fp = @fopen($this->root.$fil, "r");
  • if (!$fp)
  • {
  • $this->halt("Paramêtres du template non conforme !");
  • }
  • else
  • {
  • $bytes = @filesize($this->root.$fil);
  • $this->output .= @fread($fp, $bytes);
  • @fclose($fp);
  • }
  • }
  • }
  • }
  • // définit une nouvelle variable en rapport avec un bloc
  • function set_var($block, $name, $value)
  • {
  • if (!isset($this->group[$block]))
  • {
  • $this->halt("Le bloc n'éxiste pas !");
  • }
  • else
  • {
  • if (!isset($name) || !isset($value))
  • {
  • $this->halt("Paramêtres incorrects !");
  • }
  • else
  • {
  • $this->variables[$name] = $value;
  • $this->group[$block] .= $name."/";
  • }
  • }
  • }
  • // parse et renvoit le contenu d'un bloc
  • function parse($block)
  • {
  • if (!isset($this->group[$block]) || !isset($this->files[$block]))
  • {
  • $this->halt("Le bloc à parser n'est pas correctement définit !");
  • }
  • else
  • {
  • if (!file_exists($this->files[$block]))
  • {
  • $this->halt("Le fichier template n'éxiste pas !");
  • }
  • else
  • {
  • $f = $this->files[$block];
  • $v = $this->group[$block];
  • $content = $this->output;
  • $vs = explode("/", $v);
  • for ($i = 0; $i < count($vs) - 1; $i++)
  • {
  • if (isset($vs[$i]))
  • {
  • if (isset($this->variables[$vs[$i]]))
  • {
  • $content = eregi_replace("\{".$vs[$i]."\}", $this->variables[$vs[$i]], $content);
  • }
  • }
  • }
  • $this->output = $content;
  • }
  • }
  • }
  • // affiche la sortie du contenu
  • function get_output()
  • {
  • print($this->output);
  • }
  • // informe qu'il y a eu une erreur
  • function halt($msg)
  • {
  • $this->lasterror = $msg;
  • if ($this->debug == true)
  • {
  • $this->get_lasterror();
  • }
  • if ($this->stop == true)
  • {
  • die("<font face=\"Arial\" size=\"2\" color=\"black\"><b>Chargement arrêté !</b></font><br>");
  • }
  • }
  • // récupère le dernier message d'erreur
  • function get_lasterror()
  • {
  • print("<font face=\"Arial\" size=\"2\" color=\"red\"><b>Template:</b> ".$this->lasterror."</font><br>");
  • }
  • }
  • ?>
  • // index.php
  • <?php
  • include("template.inc");
  • $t = new Template("./");
  • $t->set_block("header", "t_header.html");
  • $t->set_var("header", "TITRE", "le titre du site");
  • $t->set_var("header", "DESCRIPTION", "et la description");
  • $t->parse("header");
  • for ($i = 0; $i < 100; $i++)
  • {
  • $t->set_block("repeat", "t_repeat.html");
  • $t->set_var("repeat", "KEY", "clef");
  • $t->set_var("repeat", "VALUE", (string) $i);
  • $t->parse("repeat");
  • }
  • $t->set_block("footer", "t_footer.html");
  • $t->set_var("footer", "INFORMATIONS", "les informations du footer");
  • $t->parse("footer");
  • $t->get_output();
  • ?>
// template.inc

<?php

/*
         ############################################################
         # Auteur:             LEMOINE Christophe                   #
         # Date:               16 juillet 2004                      #
         # Version:            1.0                                  #
         # Description:        Moteur de template                   #
         ############################################################
*/

class Template
{

      // Chemin du dossier où se trouve les fichiers du template
      var $root = ".";

      // spécifie si le mode de debuggage est actif
      var $debug = true;

      // spécifie si le script PHP arrete le chargement a chaque erreur
      var $stop = true;

      // mémorise le dernier message d'erreur
      var $lasterror = "";

      // mémorise les variables à parser ainsi que leur valeurs
      var $variables = array();

      // définit les groupes de variables à mémoriser
      var $group = array();

      // mémorise les fichiers appartenant à chaque bloc
      var $files = array();

      // sorties générales du contenu
      var $output = "";

      // initialise le moteur de template
      function Template($root = ".")
      {
               $d = @dir($root);
               if ($d)
               {
                       $d->close();
                       unset($d);
                       if (substr($root, strlen($root) - 1, 1) != "/")
                       {
                               $root .= "/";
                       }
                       $this->root = $root;
                       $this->output = "";
               }
               else
               {
                       $this->halt("Le dossier racine est incorrect !");
               }
      }

      // définit un nouveau bloc
      function set_block($name, $fil)
      {
              if (!isset($name))
              {
                      $this->halt("Nom de bloc incorrect !");
              }
              else
              {
                      if (!file_exists($this->root.$fil))
                      {
                              $this->halt("Le fichier template n'éxiste pas !");
                      }
                      else
                      {
                              $this->group[$name] = "";
                              $this->files[$name] = $this->root.$fil;
                              $fp = @fopen($this->root.$fil, "r");
                              if (!$fp)
                              {
                                      $this->halt("Paramêtres du template non conforme !");
                              }
                              else
                              {
                                      $bytes = @filesize($this->root.$fil);
                                      $this->output .= @fread($fp, $bytes);
                                      @fclose($fp);
                              }
                      }
              }
      }

      // définit une nouvelle variable en rapport avec un bloc
      function set_var($block, $name, $value)
      {
              if (!isset($this->group[$block]))
              {
                      $this->halt("Le bloc n'éxiste pas !");
              }
              else
              {
                      if (!isset($name) || !isset($value))
                      {
                              $this->halt("Paramêtres incorrects !");
                      }
                      else
                      {
                              $this->variables[$name] = $value;
                              $this->group[$block] .= $name."/";
                      }
              }
      }

      // parse et renvoit le contenu d'un bloc
      function parse($block)
      {
              if (!isset($this->group[$block]) || !isset($this->files[$block]))
              {
                      $this->halt("Le bloc à parser n'est pas correctement définit !");
              }
              else
              {
                      if (!file_exists($this->files[$block]))
                      {
                              $this->halt("Le fichier template n'éxiste pas !");
                      }
                      else
                      {
                              $f = $this->files[$block];
                              $v = $this->group[$block];
                              $content = $this->output;
                              $vs = explode("/", $v);
                              for ($i = 0; $i < count($vs) - 1; $i++)
                              {
                                      if (isset($vs[$i]))
                                      {
                                              if (isset($this->variables[$vs[$i]]))
                                              {
                                                      $content = eregi_replace("\{".$vs[$i]."\}", $this->variables[$vs[$i]], $content);
                                              }
                                      }
                              }
                              $this->output = $content;
                      }
              }
      }

      // affiche la sortie du contenu
      function get_output()
      {
              print($this->output);
      }

      // informe qu'il y a eu une erreur
      function halt($msg)
      {
               $this->lasterror = $msg;
               if ($this->debug == true)
               {
                       $this->get_lasterror();
               }
               if ($this->stop == true)
               {
                       die("<font face=\"Arial\" size=\"2\" color=\"black\"><b>Chargement arrêté !</b></font><br>");
               }
      }

      // récupère le dernier message d'erreur
      function get_lasterror()
      {
              print("<font face=\"Arial\" size=\"2\" color=\"red\"><b>Template:</b> ".$this->lasterror."</font><br>");
      }

}

?>


// index.php

<?php

     include("template.inc");

     $t = new Template("./");

     $t->set_block("header", "t_header.html");
     $t->set_var("header", "TITRE", "le titre du site");
     $t->set_var("header", "DESCRIPTION", "et la description");
     $t->parse("header");

     for ($i = 0; $i < 100; $i++)
     {
             $t->set_block("repeat", "t_repeat.html");
             $t->set_var("repeat", "KEY", "clef");
             $t->set_var("repeat", "VALUE", (string) $i);
             $t->parse("repeat");
     }

     $t->set_block("footer", "t_footer.html");
     $t->set_var("footer", "INFORMATIONS", "les informations du footer");
     $t->parse("footer");

     $t->get_output();



?>

 Conclusion

tout est dans le zip joint.
ce n'est vraiment pas dur a faire et a utiliser mais ca rend pas mal de services !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • template.incTélécharger ce fichier [Réservé aux membres club]6 105 octets

Télécharger le zip


 Historique

23 juillet 2004 15:17:31 :
Correction du problème signalé par ZacLand : $this->root.$fil .... if (!file_exists($this->root.$fil)) { ....
23 juillet 2004 15:22:40 :
Correction du bug signalé par ZacLand: Ajout des \ devant } et { .... $content = eregi_replace("\{".$vs[$i]."\}", $this->variables[$vs[$i]], $content); .... Reupload du ZIP pour les corrections

 Sources du même auteur

Source avec Zip [PHP5] LIMÉA XSLT TEMPLATE ENGINE
Source avec Zip Source avec une capture PHP4 - TREEVIEW POUR LES DOSSIERS
Source avec Zip GERER SES FORMULAIRES
Source avec Zip GÉNÉRATEUR DE FLUX RSS 2.0
CALENDRIER TOUT SIMPLE

 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

Commentaires et avis

Commentaire de GRenard le 18/07/2004 06:54:22

Ca a l'air pas mal, et c'est bien codé :)
9/10

Commentaire de Zacland le 19/07/2004 14:43:02

Bravo, super source bien codé et qui marche.

Simple d'emploi, c'est pas négligeable ^^

Pratique pour les débutant.

-=Zac

Commentaire de Zacland le 22/07/2004 23:57:07

Une toute pitite erreur:

Dans la fonction set_block

les lignes suivantes:

if (!file_exists($fil))
  {
  $this->halt("Le fichier template n'éxiste pas !");
  }

ne fonctionne pas dans le cas où l'on a rentré un path pour les templates

Correction:

if (!file_exists($this->root.$fil))
  {
  $this->halt("Le fichier template n'éxiste pas !");
  }

Zinon, za marche très très bien ^^

  -=Zac

Commentaire de lumesh le 23/07/2004 09:48:16

ouui je l'avais corrigé chez moi
mais oublié de le faire ici
dsl

Commentaire de Zacland le 23/07/2004 14:15:56

Y'a pas de mal, tant que tout le monde est au courant ^^

Sinon, il y a autre chose à savoir:

En fonction du système d'exploitation sur lequel c'est installé, la ligne:

$content = eregi_replace("{".$vs[$i]."}", $this->variables[$vs[$i]], $content);

retourne une erreur du style: REG_BADRPT error

En fait, les caractères { et } ne sont des caractères spéciaux !!!

pour que cela passe, il faut mettre le signe \ devant:

$content = eregi_replace("\{".$vs[$i]."\}", $this->variables[$vs[$i]], $content);


Sur EasyPHP, vous n'avez pas l'erreur, mais chez OVH (mon hébergeur) ça ne loupe pas, vous avez l'erreur...

Ziboux :p

    -=Zac

Commentaire de lumesh le 23/07/2004 15:13:08

Mais, sit moi, chez OVH, il tourne sous koi le serv ?
j'ai un hbergeur PRO sous Linux, et aucun PB, je suis sous EasyPHP sous win2000 pour dev et ca passe. Ca m'etonne, peux tu me donner plus d'info sur l'hbergement OVH STP ?

Commentaire de boosterjack le 21/02/2009 17:06:18

Elle fonctionne super bien mais juste un détail comment tu passes des parametres dynamiques au template ex: t'as un tableau et tu veux le recuperer dans ton template pour le traiter (ex: $t->set_var("body", "TABLEAU", $tab); dans le template je fais quoi {TABLEAU}, echo $TABLEAU ??? Si quelqu'un peut m'aider ??

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales