Bienvenue sur le site officiel du système de template GagaTemplate. Si vous avez un problème avec ce script, allez faire un petit tour dans la documentation ou si cela ne suffit pas, sur le forum.
Ce système de template est très simple et ne contient que les fonctions importantes d'un système de template, c'est pour celà qu'il est rapide et simple d'utilisation. Si vous débutez avec les templates ce script est pour vous.
Vous devez être inscrit et connecté pour pouvoir écrire dans les forums
Page : 1 |
|||||||
Tristou |
Posté le 28/02/2008 16:48 - # | ||||||
|---|---|---|---|---|---|---|---|
|
Membre 60 messages 24 ans |
Toujours pour le besoin du site actuellement en construction et pour éviter de voir des if/else/elseif partout, j'aimerais rajouter une balise: le switch. Alors pourquoi ça ? Et bien dans la gestion de la confimation, selon ce qui est rentré en paramètre de $_GET['conf'], j'affiche les infos correspondantes (par exemple selonsi on confirme l'inscription, la connexion, l'ajout d'un message sur le forum etc0, on n'aura pas la même chose). Je suppose que dans le fichier gaga.class.php, il faut modifier ceci, ce qui ne devrait pas poser de problème : public $bal = array( 'var' => array('{', '}', '$'), // balises des vars 'foreach' => array('foreach', 'var', 'as'), // balises des blocks 'include' => array('include', 'file', 'cache'), // balises de la fin des blocks 'cond' => array('if', 'elseif', 'else', 'cond'), // balises des condition 'com' => array('/#', '#/')); // balises des commentaires C'est surtout pour parser cette nouvelle balises aux différents endroits (et qu'au moment de compiler, ça transforme bien en un switch en PHP) qu ej'hésite beaucoup. Merci d'avance
|
||||||
gaga26 |
Posté le 28/02/2008 18:46 - # | ||||||
|
741 messages 18 ans |
Il ne suffit pas de modifier l'array contenant la liste des balises pour que comme par magie, mon moteur sache comment l'interpréter. Il faut que tu codes toi-même une méthode pour le faire et que tu l'ajoute dans parse_file(). |
||||||
Tristou |
Posté le 28/02/2008 19:49 - # | ||||||
|
Membre 60 messages 24 ans |
Oui je me doute , mais c'est la seule chose qui me semblait évident. Je ne sais pas trop comment faire, il faudrait remplacer les différentes parties du switch par un équivalent pour la partie template. Je suppose que ça sera plus ou moins comme pour les conditions, à savoir ça : function parse_condition($c) {
return preg_replace(array( '`<'.preg_quote($this->bal['cond'][0]).' '.preg_quote($this->bal['cond'][3]).'="(.+)">`sU', '`</'.preg_quote($this->bal['cond'][0]).'>`sU', '`<'.preg_quote($this->bal['cond'][1]).' '.preg_quote($this->bal['cond'][3]).'="(.+)"\s?/?>`sU', '`<'.preg_quote($this->bal['cond'][2]).'\s?/?>`sU', ),array( '<?php if(\1) { ?>', '<?php } ?>', '<?php }elseif(\1){ ?>', '<?php }else{ ?>' ), $c); } |
||||||
gaga26 |
Posté le 28/02/2008 20:26 - # | ||||||
|
741 messages 18 ans |
Ouai ouai, c'est plus ou moins pareil. | ||||||
Tristou |
Posté le 28/02/2008 22:39 - # | ||||||
|
Membre 60 messages 24 ans |
Bon, j'ai commencé à developper la méthode, c'est laborieux. Par contre, un truc sur lequel j'hésite : '`</'.preg_quote($this->bal['switch'][0]).'>`sU', '`<'.preg_quote($this->bal['switch'][1]).' '.preg_quote($this->bal['cond'][3]).'="(.+)"\s?/?>`sU', '`<'.preg_quote($this->bal['switch'][2]).'\s?/?>`sU', La question que je me pose, c'est à quoi correspond `sU', et '="(.+)"\s?/?>`sU', ? Et dans quel cas faut-il mettre l'un ou l'autre ? Enfin en tout cas, ça va, je comprends bien la méthode avec laquelle je travaille EDIT : bon, après pas mal d'heures de taf' et d'essais, voilà où j'en suis function parse_switch($c) { return preg_replace(array( '`<'.preg_quote($this->bal['switch'][0]).' '.preg_quote($this->bal['switch'][1]).'="(.+)">`sU', '`</'.preg_quote($this->bal['switch'][0]).'>`sU', '`<'.preg_quote($this->bal['switch'][1]).' '.preg_quote($this->bal['switch'][3]).'="(.+)"\s?/?>`sU', '`<'.preg_quote($this->bal['switch'][2]).'\s?/?>`sU', ),array( '<?php switch(\1) { ?>', '<?php } ?>', '<?php case : ?>', '<?php break; ?>', ), $c); } public $bal = array( // les balises public $bal = array( 'var' => array('{', '}', '$'), // balises des vars 'foreach' => array('foreach', 'var', 'as'), // balises des blocks 'include' => array('include', 'file', 'cache'), // balises de la fin des blocks 'cond' => array('if', 'elseif', 'else', 'cond'), // balises des condition 'com' => array('/#', '#/'), // balises des commentaires 'switch' => array( 'switch', 'var', 'case', 'break' 'defaut')); Je change sur un fichier à coté pour pas faire buger toute la classe de template Dans la méthode, seules les deux premières lignes sont faites, sûres, j'hésite ensuite, voir le problème ci-dessus Edité par Tristou le 29/02/2008 01:58 |
||||||
Tristou |
Posté le 29/02/2008 03:53 - # | ||||||
|
Membre 60 messages 24 ans |
Je me permet de remettre un message parce que sinon, je crains de ne plus être très très lisible vu ce que j'ai mis dans mon post précédent... Donc, j'y suis allé un peu à l'audace, je teste ailleurs que sur mon site ma balise switch et on va dire que ça marche partiellement : - au niveau du fichier de classe, pas d'erreur PHP, ça veut donc dire que c'est codé correctement (ouf ). La méthode parse_swich(), pour le moment ça donne ça (mais y'a des choses à changer encore) :function parse_switch($c) { return preg_replace(array( '`<'.preg_quote($this->bal['switch'][0]).' '.preg_quote($this->bal['switch'][1]).'="(.+)">`sU', '`</'.preg_quote($this->bal['switch'][0]).'>`sU', '`<'.preg_quote($this->bal['switch'][2]).' '.preg_quote($this->bal['switch'][1]).'="(.+)" />`sU', '`<'.preg_quote($this->bal['switch'][4]).'\s?/?>`sU', '`<'.preg_quote($this->bal['switch'][3]).'\s?/?>`sU', ),array( '<?php switch(\1) { ?>', '<?php } ?>', '<?php case : ?>', '<?php default : ?>', '<?php break; ?>', ), $c); } Coté PHP, ça donne simplement ça (comme pour un if en fait) : $tpl-> assign('conf', $_GET['conf']); Et du coté du fichier template, ça donne ça : <switch var="$conf"> <case var="inscription" /> ici <break /> <case var="connexion" /> là <break /> <default /> pouet <break /> </switch> Et dans le fichier compilé, ça ressemble à ça : <?php switch($conf) { ?> <?php case : ?> ici <?php break; ?> <?php case : ?> là <?php break; ?> <?php default : ?> pouet <?php break; ?> <?php } ?> Des balises d'ouverture et de fermeture un peu partout c'est pas super joli et comme vous pourrez le remarquer, il me reste à mettre un contenu à case (comme ça -> case 'truc' , là je sèche un peu et surtout quand j'exécute le fichier index.php, j'ai ce super message d'erreur à Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_CASE or T_DEFAULT or '}' in C:\Program Files\wamp\www\test\moteur\compilation\index.compiled.php on line 10 Je pense avoir été complet donc sur ce, je vous souhaite une bonne nuit et merci d'avance pour l'aide future pour arriver à faire fonctionner cette balise
|
||||||
Tibo |
Posté le 29/02/2008 19:42 - # | ||||||
|
Membre 22 messages |
Bah à la place de mettre "ici" "là" "pouet" il faut mettre des instructions. Après pas besoin de variable ici par exemple: <case var="inscription" /> ou alors faire plutot <case var="1" />
|
||||||
Tristou |
Posté le 29/02/2008 20:49 - # | ||||||
|
Membre 60 messages 24 ans |
Le 'ici', 'là' et 'pouet' que j'ai mis à titre d'exemple, cela correspond au contenu du cas du switch, comme on pourrait avoir ça : switch($truc) { case 'truc' : echo 'ici'; break; case 'machin' : echo 'là'; break; case 'chouette' : echo 'pouet'; break; default : echo 'hihi'; break; } Ce qu'il faudrait, c'est que le var de la balise template case devienne ce qu'il y a entre les ' ' du case en PHP Edité par Tristou le 29/02/2008 20:50 |
||||||
Tristou |
Posté le 02/03/2008 21:54 - # | ||||||
|
Membre 60 messages 24 ans |
Un petit coup de main gaga ?
|
||||||
gaga26 |
Posté le 03/03/2008 15:03 - # | ||||||
|
741 messages 18 ans |
Regarde la fonction parse_condition(), mais personnellement, je trouve que recoder PHP n'est pas une très bonne idées. J'ai ajouter les conditions car on les utilises souvent, mais switch... | ||||||
Tibo |
Posté le 03/03/2008 15:16 - # | ||||||
|
Membre 22 messages |
J'avoue qu'au final c'est se casser beaucoup la tête pour pas grand chose
|
||||||
Tristou |
Posté le 03/03/2008 17:57 - # | ||||||
|
Membre 60 messages 24 ans |
Hum, je ne compte pas réinventer la roue, je trouve simplement qu'utiliser un switch est plus pratique que d'utiliser une succession de if, elseif else dans une même page. Tout ce que j'ai mis ci-dessus est basé sur la méthode parse_condition() et à la limite pour le reste, je pense pouvoir me débrouiller, il n'y a que pour l'erreur PHP que je ne vois pas la solution
|
||||||
Ze Thriller |
Posté le 10/03/2008 21:21 - # | ||||||
|
Membre 105 messages 24 ans |
-2 pour le switch: 1. C'est pas si dur que ça d'en faire l'équivalent if ... elseif ... else 2. Bizarrement en PHP un switch est plus lent qu'une suite de if de taille égale. Contrairement au C par exemple. |
||||||
gaga26 |
Posté le 10/03/2008 21:27 - # | ||||||
|
741 messages 18 ans |
Citation : Ze Thriller [...] 2. Bizarrement en PHP un switch est plus lent qu'une suite de if de taille égale. Contrairement au C par exemple. Mouai bon, c'est vraiment pinailler... Perso si j'ai un grand nombre de truc à comparer, je préfère switch, c'est plus joli dans le code, et osef des quelques micro secondes de perdues... |
||||||
Tristou |
Posté le 11/03/2008 12:29 - # | ||||||
|
Membre 60 messages 24 ans |
Attention, je ne dis pas que j'ai la flemme d'utiliser if, else et elseif, simplement à force d'en utiliser, je finis par ne pas trouver ça clair, même avec des commentaires. Le switch me parait plus adapté, même si c'est plus lent, on est pas à quelques ms près Edité par Tristou le 11/03/2008 12:30 |
||||||
Ze Thriller |
Posté le 12/03/2008 02:38 - # | ||||||
|
Membre 105 messages 24 ans |
Chacun ses goûts... C'est vrai que la différence est minime, mais je suis habitué aux if, j'y suis,j'y reste ^^ Et non, je ne trouve pas que je m'y perde ^^ |
||||||
Tristou |
Posté le 12/03/2008 18:57 - # | ||||||
|
Membre 60 messages 24 ans |
Bon enfin ça ne résout pas mon problème Si quelqu'un a une piste, je suis preneur ^^ |
||||||
Page : 1 |
|||||||
Vous devez être inscrit et connecté pour pouvoir écrire dans les forums
Retour au forum Balises, à la liste des forums, ou au haut de page


