Ticket #14 (new defect)

Opened 6 years ago

Last modified 6 years ago

conf smarty/cache dupliquée dans divers fichiers php

Reported by: mat Owned by: mat
Priority: low Milestone: milestone1
Component: other Version: 1.0
Severity: normal Keywords:
Cc:

Description

La conf de base de smarty (tous les _dir), la création de l'objet smarty lui meme, et tout ce qui s'ensuit (tous les $smarty->register_*), sont dupliquées dans tous les fichiers php qui ont besoin de ce dernier. Si ya une raison, je veux bien l'entendre, sinon ca serait pratique d'avoir tout ca dans un fichier a part, appellé a chaque fois. A la limite, faudra réfléchir a un truc pour ne pas appeller les register_* et leurs amis lorsque cela n'est pas nécessaire, mais c'est amha pas tellement important.

Note: ne pas confondre avec smarty/configs/, que personellement je n'ai jamais utilisé, et qui permet si j'en crois la doc smarty d'avoir des variables pré-assignées a utiliser ensuite dans les templates.

Attachments

smarty.inc.php (2.1 KB) - added by mat 6 years ago.
Prototype de smarty.inc.php

Change History

Changed 6 years ago by mat

  • summary changed from conf smarty dupliquée dans divers fichiers php to conf smarty/cache dupliquée dans divers fichiers php

Update: cela concerne aussi la config du cache, avec $cache_array, qui devrait etre dans un fichier a part. Surtout que a premiere vue c'est trompeur, vu que 90% du contenu du tableau est inutile pour un fichier donné car il concerne d'autres fichiers, mais que c'est quand meme dupliqué, si un jour quelqu'un s'amuse a modifier les valeurs dans un fichier mais pas dans l'autre ca sera sympa pour s'y retrouver :)

Changed 6 years ago by alexx

  • status changed from new to assigned
  • milestone set to milestone1

En faite, j'ai fait dotnode-pub.php, puis ajouté l'auth et fait dotnode-id.php ... Ensuite, pour des besoins spécifique, j'ai creer -new.php ou encore -xml.php

Ce sont des copies de -pub ou -id suivant s'il fallait l'auth ou pas.

J'ai peut-etre effectivement etait trop bourrin ;)

Pour ce qui est de smarty, il y a bien des arguments qui varie (l'emplacement des templates, le compile_id, etc...). Si c'est un dotnode-xxx.php qui est appelé avec un smarty a l'interieur, c'est qu'il en a besoin. Les scripts qui ne requierent pas d'affichage sont dans actions/ et sont exécuté (par include) par dotnode-action.php.

Changed 6 years ago by mat

Je commence a piger l'organisation. Pour smarty, amha un includes/smarty.inc.php avec les valeurs par défaut ferait un peu plus propre, et ensuite dans les divers fichiers php en ayant besoin on ecrase les valeurs pour template/compile_id/cache/etc. Mon idée étant que toute duplication du code est mauvaise pour la santé :)

Changed 6 years ago by alexx

oui 100% d'accord. Voir même faire un objet Smarty_dotnode qui hérite de Smarty mais fixe les valeurs par defaut (fonctionnement préconisé par la doc Smarty).

Changed 6 years ago by mat

  • priority changed from normal to low
  • status changed from assigned to new
  • owner changed from alexx to mat

Vi. C'est un truc relativement peu prioritaire, je vais essayer de me faire la main sur dotnode avec, ca devrait pas prendre trop longtemps et ca me fera visiter un peu tous les fichiers.

Changed 6 years ago by mat

Prototype de smarty.inc.php

Changed 6 years ago by mat

J'ai attaché un prototype tout bete. Quelques remarques/questions dessus:

  • wiki.inc.php doit etre inclu avant dans includes.inc.php, ou alors faut utiliser des include_once a cause du register sur Wikise.
  • meme remarque pour config.inc.php a cause de SMARTYPATH
  • je voulais utiliser une variable $vars dans l'objet, qui remplacerait le tableau $_SMARTY introduit dans le changeset [10], mais c'est c'est un peu tordu: en effet, celui ci est utilisé dans config.inc.php par exemple, avant l'initialisation de l'objet Smarty. Tout le probleme etant que cet objet n'est initialisé (ou non) que dans les pages php elles memes. Bref, je suis un peu coincé sur ce coté la et j'ai rien fait pour le moment.
  • j'ai mis tous les modifiers parceque je doute que ca vaille le coup de faire du cas par cas pour savoir si il faut oui ou non les avoir sur chaque page. Ca coute relativement peu amha et c'est plus simple a gerer.
  • niveau variables j'ai pas mis grand chose parceque un rapide coup d'oeil m'a montré que yen avait pas vraiment besoin
  • niveau variables concernant le cache, je prefere entendre une explication sur quelles pages utilisent le cache ou pas, pourquoi, tout ca, avant de faire quoi que ce soit :)

Voila, je m'arrete la parceque sinon le commentaire du ticket sera plus long que le fichier lui meme.

Changed 6 years ago by alexx

wiki.inc.php doit etre inclu avant dans includes.inc.php, ou alors faut utiliser des include_once a cause du register sur Wikise.
Effectivement, ca sera include_once. Car je pense que l'objet Wikini est utilisé dans le code php (dans les inc/) en plus de l'être abondamment dans les templates.

je voulais utiliser une variable $vars dans l'objet...
Je n'en vois pas l'interet a part faire plus clean niveau object. La var $_SMARTY[] a été introduite pour ne pas trop alourdir le code de "$smarty->vartruc? = $machin". Faut le voir comme une macro ;)

j'ai mis tous les modifiers...
Oui, de toutes facon, il y a l'optimiser pour faire ce genre de taf ;)

niveau variables j'ai pas mis grand chose...
Oui, juste compile_id, cached, et le debug pour l'admin ...

niveau variables concernant le cache...
Les pages cachés sont celle variant peu (sans blague .... :-D).
Par exemple : la page de news, le résumé des tickets de blogs (mis a jour que toutes les 2h), l'annuaire des communautés, s'il y a un décalage de 24h entre l'ajout d'un comm et l'affichage dans la page d'accueil de l'annuaire, c'est pas grave. Idem avec les formulaires 'statique' comme la création d'une communauté.
mais la mise en include séparé serait effectivement souhaitable.

Changed 6 years ago by alexx

Je viens comminter la revision [16] pour inclure tes propositions de modifications. je te laisse voir s'il faut encore modifier/améliorer, ou si tu peux fermer le ticket:)

Changed 6 years ago by mat

Oui (j'ai fait la révision [18] pour nettoyer 3 lignes inutiles :), juste une derniere petite question: je ne vois pas de mise a true/1/2 de $smarty->caching dans dotnode-dotpage.php et dotnode-xml.php, pourtant elles ont besoin du cache, non ?

Note: See TracTickets for help on using tickets.