Tom's Guide > Forum > Programmation > [Php] Création d'un moteur de template, problème avec les conditions

[Php] Création d'un moteur de template, problème avec les conditions

Forum Programmation : [Php] Création d'un moteur de template, problème avec les conditions

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Voilà bonjour à tous, j'ai décidé de créer mon propre moteur de template.
Je sais qu'il en existe de très bons déjà faits etc mais je le fais surtout pour apprendre, voir comment ça marche etc.
Je me suis aidé de ce tuto pour faire ce que j'ai :http://skillexchange.info/blog/index.php?2005/04/14/27-faire-son-propre-moteur-de-template
et me suis inspiré de gagatemplate de gaga26 dont le tuto est disponible sur le site du Zéro.
Pour l'instant le moteur ne fait que le remplacement de variables.
Voici le code du moteur :

Code :
  1. <?php
  2. class evoluTemplix
  3. {
  4.   // Declaration des variables utilisées par le moteur
  5.   private $dossierTemplate ;  // Adresse du dossier des templates par rapport à la page
  6.   private $contenuTemplate ;  // Contenu du fichier TPL
  7.   private $cleVariable ;  // Cle utilisée par le TPL pour appeller une valeur
  8.   private $valeurVariable ;  // Valeur d'une variable (liée à sa clé)
  9.  
  10.  
  11.   // Constructeur, on défini le dossier des template et on initialise les variables moteur
  12.   function __construct($dossier)
  13.   {
  14.     $this->dossierTemplate = $dossier ;
  15.     $this->contenuTemplate = '' ;
  16.     $this->cleVariable = array() ;
  17.     $this->valeurVariable = array() ;
  18.   }
  19.  
  20.  
  21.   // On assigne une clé à sa valeur
  22.   function assigne($cle, $valeur = null)
  23.   {
  24.     if(is_array($cle))
  25.     {
  26.       foreach($cle as $cle => $valeur)
  27.       {
  28.         $cle = '{$'. $cle .'}' ;
  29.         array_push($this->cleVariable, $cle) ;
  30.         array_push($this->valeurVariable, $valeur) ;
  31.       }
  32.         }
  33.         else
  34.         {
  35.       $cle = '{$'. $cle .'}' ;
  36.       array_push($this->cleVariable, $cle) ;
  37.       array_push($this->valeurVariable, $valeur) ;
  38.     }
  39.   }
  40.  
  41.   // Parsage du fichier TPL
  42.   function parse($file)
  43.   {
  44.     $this->contenuTemplate = file_get_contents($this->dossierTemplate.$file) ; // Récupération du fichier TPL
  45.     $this->contenuTemplate = str_replace($this->cleVariable, $this->valeurVariable, $this->contenuTemplate) ; // On remplace les clé par leur valeur respectives
  46.     echo $this->contenuTemplate ; // On écrit le contenu du fichier sur la page
  47.   }
  48. }
  49. ?>



Alors voilà je voudrais faire des conditions qui seraient comme ça (remplacez les ** par des conditions)

Code :
  1. {?if(**)} Matthew est un gnome {?else} C'est un fou {/?if}



Le probleme c'est que je n'ai aucune idée de comment fait ça, j'ai pensé que je pouvais essayer de les retrouver et les faire executer avec eval() mais je vois pas comment faire ça.
Sinon j'aimerai savoir comment faire pour chronometrer le temps d'éxécution de la page et de le placer dans une variable {$chrono} par exemple, je sais qu'on peut le faire avec microtime(true) (je code en PHP 5) et qu'en faisant la différence entre le début et la fin on l'an, mais je veut compter le parsage du moteur dedans et je vois pas comment mettre la valeur dans une variable apres que le fichier ait été parsé.
Je sais pas si c'est très clair pour vous donc n'hésitez pas à poser des questions !! :)


Merci beaucoup d'avance ;) !!

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

** Mauvais clik :D .
Merci de m'aider :ange:


Message édité par stevendu01 le 13-02-2007 à 20:02:02
Répondre à stevendu01
Tom's Guide > Forum > Programmation > [Php] Création d'un moteur de template, problème avec les conditions
Aller à :

Il y a 434 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens