Template ou pas

Xavier
Invité n'ayant pas de compte PHPfrance

29 mai 2007, 21:12

Bonjour,
J'hésite sur la manière de construire mes pages PHP entre:
-élaborer un systeme de template simple;
-rédiger mes pages avec des "echos" multiples.
Je suis plus partant sur un systeme de template basique comme évoqué dans divers sites. Mais je me pose des questions sur les limites de la (pseudo) fonction "echo":
-y a t'il une limite a la quantité d'information que peut afficher la fonction echo? (si j'ai une variable $contenu qui contient l'équivalent de 5 pages A4, risque je d'avoir quelques problemes pour afficher ce contenu en faisant echo $contenu au sein d'un template?
-Vaut il mieux faire plusieurs echos que tout regrouper dans un seul?

Merci pour tout élément de réponse..
Xavier

Eléphant du PHP | 199 Messages

29 mai 2007, 21:26

Effectivement la solution d'un système de templates simple est (à mon avis) la plus avantageuse. Elle te permet de séparer le code PHP de la mise en page HTML tout en restant légère et simple d'utilisation. Je n'ai jamais entendu parler d'une limite de la fonction echo, qu'on me corrige si je me trompe.
Klomac - Blog Lambda

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

29 mai 2007, 23:50

Concernant les echo multiple, simple ou le print(), tu trouveras des benchmarks commentés chez Dew et chez Fred Bouchery.

Je te conseille d'utiliser des templates qui te permettront de maintenir ton site dans le futur plus aisément. C'est le concept MVC...
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

30 mai 2007, 01:33

y a t'il une limite a la quantité d'information que peut afficher la fonction echo?
Non, pas vraiment. Tu pourrais faire un echo de 16 MiB sans problème particulier (du moment que la variable tient en mémoire). Ce n'est pas une bonne pratique mais ce n'est pas un gros problème non plus, il faut juste éviter de le faire quand on est pas obligé. Si tu peux commencer à faire des echo pendant la création de tes "5 pages A4" l'utilisateur commencera à recevoir les données plus tôt et aura une meilleure impression de vitesse. Si ces données sont dans un fichier, oublie echo et utilise readfile() à la place.

Concernant les performances d'echo, c'est une bonne habitude que d'utiliser un "echo multi-arguments" plutôt que l'opérateur de concaténation, ainsi que de sortir de PHP pour les gros morceaux de HTML sans variables. Par exemple, au lieu de
echo "J'ai $x pommes et $y oranges";
echo "J'ai " . $x . ' pommes et ' . $y . ' oranges';
...on préfèrera
echo "J'ai ", $x, ' pommes et ', $y, ' oranges';
La différence entre . et , c'est que le premier concatène toute la phrase en mémoire puis fais un echo du résultat, alors que le second affiche chaque élément au fur et à mesure. C'est un détail technique. Quant aux gros blocs HTML:
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>Mon site</title>
	</head>

	<body>
		', $PAGE, '
	</body>
</html>';
...sera remplacé par
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>Mon site</title>
	</head>

	<body>
		<?php echo $PAGE; ?>
	</body>
</html>
...mais là encore, le gain est infinitésimal. À l'échelle d'une page entière, en optimisant tous tes echo tu gagneras peut-être un millième de seconde. En même temps c'est un 1/1000ème de seconde que tu gagnes en rendant ton code plus lisible donc c'est doublement avantageux ;)

Xavier
Invité n'ayant pas de compte PHPfrance

30 mai 2007, 08:25

Merci pour tout ces éléments de réponse. Ca dissipe completement les doutes que je pouvais avoir sur echo.
Toutefois si je n'ai plus trop de doute sur celle ci, je m'interroge quand même toujours sur les désavantages d'un systeme de template par rapport a un systeme plus classique (je vois les avantages)...

La structure du site est composé d'un menu haut et bas invariable, d'un menu gauche qui varie selon les parties et d'une partie contenu ou s'affiche les informations. Cette structure ne devrait pas changer mais il n'est pas impossible qu'un <div> soit rajouté
J'avais initialement coder pour toutes mes pages cela sous la forme :

do_menu_haut()
do_cadre_debut()
do_menu_gauche()
do_contenu_debut()
/*
je met ici les éléments propre a la page
*/
do_contenu_fin()
do_cadre_fin()
do_menu_bas()

ou chacune des fonctions ci dessous renvoie le code html concernant l'élement de structure concerné
Si je passe a un systeme de template je peux coder le template unique en html ou éventuellement réutiliser le systeme précédent avec au niveau de la partie modifiable:
(<?php) echo $contenu; (?>)

J'en arrive a ce qui me dérange un peu dans le systeme de templates...
Dans le systeme précédent je pouvais insérer les éléments propres a chaque page en utilisant directement du code html (?> élement html <?php) ou en passant de php a html...
Dans le systeme de template je dois pour chacune des pages variables tout affecter a $contenu (j'ai donc de ligne en ligne des "$contenu.='<p>et voila du texte supplémentaire<p>';" (bien sur les gros textes seront mis dans des fichiers a part, extrait et concaténé dans $contenu...

Je trouve assez dérangeant de ne pouvoir insérer directement du html (hormis dans le template lui même). Ma question est donc...
Certains d'entre vous regrettent t'ils d'être partie dans un systeme de template, sont ils revenus d'un systeme de template ou n'ont pas opté pour un systeme de template pour ces raisons...
Merci. Xavier