OVH Cloud OVH Cloud

de l'utilite des templates (long)

13 réponses
Avatar
Gabriel
bonjour,

tout d'abord, ceci n'est pas un troll :)

Voici la question que je me poste depuis un certain temps :
J'utilise pour mes développements php un modèle mvc avec une page
index.php qui appelle telle ou telle fonction en fonction de la valeur
du paramètre action :
index.php?action=login -> appelle une fonction qui charge le template
login.tpl contenant ceci :
{err_login}
input value="{login}
input value="" name="pwd" bla bla...
Supprime tout ce qui se trouve entre accolades et echo la variable.

et en cas d'erreur lors de l'identification, :
je charge le template dans une variable
je remplace les err par le msg qui va bien
je remets le login entré
je fais echo $template et c'est reparti :)

A la lumière de certains posts du groupe (php EST un moteur de template
lui-même), j'en suis venu à m'interroger s'il ne serait pas plus
judicieux de creer un tableau ou objet (je suis pas sectaire :)) en
session et de faire une redirection (via un header:location) vers la
page login.php.

Cette page login php contiendrait le formulaire de login qui était
auparavant dans le template et testerait la présence et les valeurs du
tableau et au lieu d'avoir des {err_login}, j'aurai des :
<? echo $informations['login'] ?> où information est le fameux tableau
stocké en session.
J'incluerai évidemment dans chaque page un quelconque système de
contrôle pour vérifier qu'une personne n'a pas appelé la page
directement, sans passer par le controlleur.

Les questions sont les suivantes :

Est-ce que faire 20 <? echo $toto;?> est plus coûteux que charger le
template et faire des str_replace et un seul echo à la fin du traitement
(non ce n'est pas de la s.... de mouche, je voudrais connaitre vos
retours d'expérience en fait car mes lectures m'ont dit que
l'instruction de pré-processing qui lance l'interpréteur php est
coûteuse à force (PHP 5 Campus presse) ?

Les moteurs de templates semblent être à la mode en php :); mais je
m'interroge car des include fonctionnent aussi très bien (j'ai dit pas
de troll, je pose la question simplement ;))

Le but final étant de développer une implémentation de modèle MVC qui
jusqu'à présent se basait sur des templates et qu'aujourd'hui, je tente
de refondre et optimiser...

Merci d'avoir lu jusque là :)

take off my hat.

3 réponses

1 2
Avatar
Gabriel
John GALLET wrote:
Re,

Merci pour l'explication qui fut très claire :)


Et encore, je ne t'ai pas sorti la traditionnelle "MALC du livreur de
machine à laver".
Tiens au hasard :
http://groups-beta.google.com/group/fr.comp.lang.php/browse_thread/thread/ca2e5ca0ce8584a5/1a018f97203a761c
(passera pas le formattage 72 colonnes, mais j'ai la flemme)
Je l'avais lu en fait et j'avais oublié ;)


Un dao ? Connais pas. Un dahu, oui, mais un dao... ;-)
NAn, pas la chasse au dahu, pas encore ouverte :)

le DAO : Data Access Object objet qui sert d'interface pour accéder aux
données via des méthodes/fonctions.
Le modèle ne voit jamais la source d'accès aux données directement.

Oui, mais si ton fameux dahu^Wdao recopie les données du result set de la
base dans une structure locale (array en php, arraylist par exemple en
java) non seulement du bouffes deux fois la mémoire, mais tu perds ton
temps à faire des choses inutiles... C'est le prix de l'encapsulation.
Effectivement, je reformate des résultats déjà formatés mais je chosis

de payer le prix :)

Ce que, je m'en doute : une structure de données strictement équivalente à
celle qui revient du sgbd_fetch_bidule( ) exécuté sur tout le sgbdr_query(
), avec code d'erreur, et nombre de rangs.
voui.

La question c'est : comment. En schématisant comme un goret est-ce qu'on
te passe une copie ou un pointeur sur les raw data reçues (plus
précisement leur représentation en PHP car on a reçu un result set en C et
on a déjà bindé les structures de la base vers une structure en C pour
créer la variable PHP).
Non, j'encapule les résultats dans un tableau associatif.


J'utilise directement le buffer de résultat en boucle while dans ma couche
de présentation si j'en ai besoin et que j'ai pas de post-traitements à
effectuer dessus. Sinon j'utilise carrément une couche d'abstraction genre
innodb.
ok, je vais continuer à réfléchir à tout cela :)


bonne soirée en tout cas !


Avatar
loufoque
John GALLET a dit le 31/03/2005 à 08:53:

J'utilise directement le buffer de résultat en boucle while dans ma couche
de présentation


Le mieux c'est quand même un itérateur.

Avatar
John GALLET
Sinon j'utilise carrément une couche d'abstraction genre innodb.


Il fallait évidemment (!) lire : adodb et non innodb qui n'a rien à voir
là dedans. http://adodb.sourceforge.net/

JG
--
"demain j'enlève les moufles"

1 2