IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Template PHP, (DoSimple?)


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut Template PHP, (DoSimple?)
    Voilà, j'aimerai faire un générateur de template (en réalité il est déjà fait)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    <?php
     
    function generate_template($template_path, $array)
    {
    	if (file_exists($template_path))
    		$template = generate_match(file_get_contents($template_path), $array);
    	else
    		return false;
     
    	return $template;
    }
     
    function generate_match($template, $array)
    {
    	preg_match_all('/<!-- IF (.*?) -->/U', $template, $match['if']);
    	preg_match_all('/<!-- LOOP (.*?) -->/U', $template, $match['loop']);
    	preg_match_all('/{(.*)}/U', $template, $match['string']);
     
    	$template = generate_template_if($template, $match['if'][1], $array);
    	$template = generate_template_loop($template, $match['loop'][1], $array);
    	$template = generate_template_string($template, $match['string'][1], $array);
     
    	return $template;
    }
     
    function generate_template_if($template, $match, $array)
    {
    	for ($i = 0; $i < count($match); $i++)
    	{
    		if (!empty($array[$match[$i]]))
    		{
    			preg_match_all('/<!-- IF '.$match[$i].' -->(.*?)<!-- FI '.$match[$i].' -->/s', $template, $match_if);
    			for ($x = 0; $x < count($match_if[1]); $x++)
    				$template = preg_replace('/<!-- IF '.$match[$i].' -->(.*?)<!-- FI '.$match[$i].' -->/s', generate_match($match_if[1][$x], $array), $template);
     
    			$template = preg_replace('/<!-- ELSE '.$match[$i].' -->(.*?)<!-- ESLE '.$match[$i].' -->/s', '', $template);
    		}
    		else
    		{
    			preg_match_all('/<!-- ELSE '.$match[$i].' -->(.*?)<!-- ESLE '.$match[$i].' -->/s', $template, $match_if);
    			for ($x = 0; $x < count($match_if[1]); $x++)
    				$template = preg_replace('/<!-- ELSE '.$match[$i].' -->(.*?)<!-- ESLE '.$match[$i].' -->/s', generate_match($match_if[1][$x], $array), $template);
     
    			$template = preg_replace('/<!-- IF '.$match[$i].' -->(.*?)<!-- FI '.$match[$i].' -->/s', '', $template);
    		}
    	}
    	return $template;
    }
     
    function generate_template_loop($template, $match, $array)
    {
    	for ($i = 0; $i < count($match); $i++)
    	{
    		if (!empty($array[$match[$i]]))
    		{
    			preg_match_all('/<!-- LOOP '.$match[$i].' -->(.*?)<!-- POOL '.$match[$i].' -->/s', $template, $match_loop);
    			for ($x = 0; $x < count($match_loop[1]); $x++)
    				$template = preg_replace('/<!-- LOOP '.$match[$i].' -->(.*?)<!-- POOL '.$match[$i].' -->/s', generate_match($match_loop[1][$x], $array[$match[$i]]), $template);
    		}
    		else
    			$template = preg_replace('/<!-- LOOP '.$match[$i].' -->(.*?)<!-- POOL '.$match[$i].' -->/s', '', $template);
    	}
    	return $template;
    }
     
    function generate_template_string($template, $match, $array)
    {
    	for ($i = 0; $i < count($match); $i++)
    	{
    		if (!empty($array[$match[$i]]))
    		{
    			if (is_array($array[$match[$i]]))
    			{
    				for ($x = 0; $x < count($array[$match[$i]]); $x++)
    				{
    					if (empty($template_array[$x]))
    						$template_array[$x] = $template;
     
    					$template_array[$x] = str_replace('{'.$match[$i].'}', $array[$match[$i]][$x], $template_array[$x]);
    				}
    			}
    			else
    				$template = str_replace('{'.$match[$i].'}', $array[$match[$i]], $template);
    		}
    		else
    			$template = str_replace('{'.$match[$i].'}', '', $template);
    	}
    	if (!empty($template_array))
    	{
    		$template = '';
    		for ($i = 0; $i < count($template_array); $i++)
    			$template .= $template_array[$i];
    	}
    	return $template;
    }
     
    ?>
    Alors le générateur de template gère:
    les conditions <!-- IF xxx --> <!-- ELSE xxx -->
    les boucles <!-- LOOP xxx -->
    les remplacements de string {xxx}

    enfin un générateur de template assez basique (assez lourd et a débuguer)

    Y'aurait t'il moyen de ne plus utiliser de fonction lourde telque preg_match_all pour la détection des blocks d'instruction du template?


    Mais j'aurais aimé savoir si il été vraiment mieux d'utiliser une Class PHP plutôt que plusieurs fonctions?
    Si oui, auriez vous un site qui montre comment crée des Class PHP?

    Et non, je ne veux pas de système de template tout près comme Smarty ou encore TemplateLite...

    je vous remercie d'avance

  2. #2
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Points : 256
    Points
    256
    Par défaut
    Salut

    peut etre que cette article peut t'intéresser
    je pense que c une des solutions les moins lourde pour gérer la partie vue d'une application php

    http://sahid.funraill.org/2007/01/23/modele-mvc-en-php/

    sahid

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    Merci, je pense m'orienter dessus, mais pour ce qui est des conditions et des boucles?

  4. #4
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Points : 256
    Points
    256
    Par défaut
    arf,

    à ce niveau la tu devrais implémenter ta classe des méthodes que tu à besoins, m'enfin ce style de fonctionnalité rend ton application bien plus lourde.

    Dans tout les cas, tu utilises des conditions PHP, que tu caches derrière un pseudo-code html ... pkoa ne pas directement utiliser une boucle for, ou while dans ton template ?

    si ca ne te plaie pas, tu peux toujours disposer d'une classe avec des méthodes qui te retournerons les éléments que tu as besoin.

    exemple :

    partie metier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    $view = new view ("/tpl");
    $view->menu = affiche::menu (); // retourne le menu
    $view->render ("index.tpl.php");
    ...
    partie vue (index.tpl.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    <ul>
        <?=$this->menu; ?>
    </ul>
    ...
    tu disposes ainsi d'une application propre et performante

    sahid

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    je te remercie encore, j'ai regarde ton site, il est pas mal du tout.

    se qui est dommage c'est que je ne suis pas familiarisé avec les Class PHP,
    donc je vais prendre note de ce que tu m'as donnés et je vais m'informé sur les Class PHP.

    Pour ce qui est du template, je pensé faire 1 template par type de page, un template complet (ce qui permet de mieux travaillé le design)
    comme par exemple (rien à voire mais pertinent):
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?xml version="1.0" encoding="{encoding}"?>
     
    <rss version="2.0">
      <channel>
        <title>{title}</title>
        <link>{link}</link>
        <description>{description}</description>
        <language>{language}</language>
        <lastBuildDate>{lastBuildDate}</lastBuildDate>
    <!-- LOOP item -->
        <item>
          <title>{title}</title>
          <link>{link}</link>
          <description>{description}</description>
          <pubDate>{pubDate}</pubDate>
          <dc:creator>{creator}</dc:creator>
          <comments>{comments}</comments>
        </item>
    <!-- POOL item -->
      </channel>
    </rss>

    j'aime pas trop décomposé les fichiers (surtout des templates),
    je ne sais pas trop comment faire encore, mais j'aime beaucoup ton système (très propre et claire)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    finalement, je vais partir sur le système de template utilisé par phpbb,
    je vais voir à quoi il ressemble, testé si il est rapide.

    Si quelqu'un connait un système de template SIMPLE et PROPRE, qui gère:
    les conditions et les boucles :p

  7. #7
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Points : 256
    Points
    256

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    merci, j'ai vue, mais je pense partir sur quelque chose de plus connue, comme Smarty par exemple, mais ce qui m'ennui c'est le fait qu'il soit une usine à gaz, alors que j'ai besoin de presque rien...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    Je pense avoir trouvé mon bonheur:
    http://dosimple.ch/articles/Template...ate.class.phps

    http://dosimple.ch/articles/Template/

    Si une quelqu'un connait?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. onclick : changer le template php
    Par maildeseb dans le forum Langage
    Réponses: 11
    Dernier message: 27/10/2009, 16h55
  2. [Bénévole] Graphiste web pour moteur de template php
    Par cahnory dans le forum Autres
    Réponses: 0
    Dernier message: 24/06/2009, 21h04
  3. template.php pour variable xhtml
    Par StAfX dans le forum Langage
    Réponses: 1
    Dernier message: 05/02/2009, 10h38
  4. [XSLT][Templates][PHP] Que choisir pour gérer ses templates
    Par ChriGoLioNaDor dans le forum Langage
    Réponses: 8
    Dernier message: 03/09/2008, 20h49
  5. [MySQL] Template PHP
    Par CeroGrimm dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 21/04/2008, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo