[PHP5] LIGHTEMPLATE - MOTEUR DE TEMPLATES ULTRA-LÉGER

Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
- - Dernière réponse : neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
- 28 déc. 2008 à 11:36
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46354-php5-lightemplate-moteur-de-templates-ultra-leger

neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
Salut,

Merci de t'intéresser à ma source :) Elle n'est donc pas totalement morte ^^

Dans l'ordre...
- Des exemples : Oui, ça pourrait être pas mal, en effet. Je pensais en fait que c'était l'utilisation de la classe qui nécessitait d'être illustrée, un template restant un template...
- Nettoyer les lignes vides : euh... Je vois pas bien l'utilité fondamentale...
- isEmptyDir : je crains que ta fonction n'offre pas la même finesse dans la gestion des exceptions. Ou alors je suis pas assez bien réveillé pour bien comprendre.
- DIRECTORY_SEPARATOR : dans l'absolu, je te donne raison. Dans la pratique, PHP sait parfaitement manipuler les / dans les chemins sur Windows avec toutes les fonctions de fichiers... Je n'ai jamais vraiment compris l'intérêt profond que présente cette variable dans l'utilisation courante... Si encore il était utile d'écrire à l'écran le chemin d'un fichier pour l'utilisateur... mais même pas...
- blocs imbriqués : Je ne souhaite pas que ce soit possible, parce que cela obligerait l'utilisation d'expressions régulières, or c'est une contrainte que je me suis fixé dès le départ. Et si je dois utiliser des Regex, autant réécrire Smarty. On peut imbriquer des blocs en utilisant un template par boucle, et en assignant le résultat d'un premier à une variable d'un autre. Permettre des blocs imbriqués reviendrait à permettre de faire la même chose de plusieurs manières différentes, ce qui est contraire à ma ligne de coding.
- ob_start() : je vois pas bien l'intérêt... Si tu veux bien expliquer un peu...
WildGroup
Messages postés
15
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
2 novembre 2010
-
Re...

peut être mais de mon coté je trouve ceci bien pour alléger le contenu.

:: IDEES ::
Pour quoi pas :
- donner un/des exemple/s précis avec les fonctions de ta classe en utilisent des *.tpl
- un petit netoyage des lignes vides dans le file_get_contents
- un function qui peut etre t'evitera de faire trop des vérifications dans ton __construct

function isEmptyDir($dir,$_return = false) {
if(is_dir($dir)):$_return (($files @scandir($dir)) && count($files) <= 2);
endif;
return $_return;
}

- utiliser DIRECTORY_SEPARATOR;
- donner la possibilité d'utiliser des block in block
ex:
<!-- BEGIN main_menu -->
<!-- BEGIN items -->
<!-- END items -->
<!-- END main_menu -->
- utiliser ob_start() avant "file_get_contents"

P.S.: il est 2h de mat je n'ai pas trop épluché ton code mais je reviendrais a l'occasion

Bon travail si non encore quelques modif et tu peux changer de niveaux ...:p
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
Salut,

Cela n'est, à mon sens, pas du ressort du template. Cela peut être fait de manière indépendante par une fonction externe.
Le template se contente de remplacer des variables dans un modèle : c'est son rôle, il ne fait rien d'autre.
WildGroup
Messages postés
15
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
2 novembre 2010
-
bonsoir.... et joyeux noel

le bosseurs ils se retrouve meme "dans le coin"

pour quoi pas prévoir/ajouter une fonction de sanitize?

function sanitize_tpl($buffer) {
$search = array("/\>[^\S ]+/s", "/[^\S ]+\</s", "/(\s)+/s");
$replace = array(">", "<", "\\1");
$buffer = preg_replace($search, $replace, $buffer);
$buffer = str_replace(array("\n", "\t", "\r"), "", $buffer);
$buffer = str_replace(array(" "), " ", $buffer);
return $buffer;
}
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
Plop,

Encore une mise à jour : v0.4
- Nouvelle méthode : append() permet d'ajouter du contenu à une variable déjà définie. Si la variable n'existe pas, elle est automatiquement créée.
- Suppression de la méthode clearVars() et renommage de la méthode clearVar() en clear(). Avec argument : supprime la variable spécifiée. Sans argument, supprime toutes les variables.
- correction de quelques tests (avec is_scalar() notamment), parmi lesquels certains provoquaient un comportement inattendu

Je prévois un petit site à l'arrache pour documenter tout ça correctement, en plus de la doc fournie dans le code source.
Je suis également preneur de toute idée de fonctionnalité qui pourrait être utile (ah j'ai pas encore implémentée l'idée de Malalam concernant l'alternance) sans sacrifier aux performances ni à la légèreté.