8791 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

FlorentG a écrit :

PHP parse le contenu de la chaîne à la recherche de variable. Un peu comme les double-quotes, sauf qu'avec HEREDOC on a tendance à mettre des textes monstres. Si tu utilises du heredoc, vaut mieux essayer de profiler l'application et voir si ça ralentit pas trop les choses... Je te conseille de lire un post de Sara Golemon, How long is a piece of string? (en) Smiley smile


Et bien non, ça n'impacte pas de façon sensible. Ce n'est pas du tout significatif, même avec un heredoc épais (plusieurs milliers de lignes).
Modifié par GeorgesM (17 Nov 2006 - 13:31)
C'est pour ça que j'ai dis de profiler l'application, histoire de voir l'impact au final. Forcément si t'as une centaine de requêtes à côté, ça va pas être grand chose Smiley lol Maintenant si c'est dans une boucle répétée 10 000 fois, là peut y avoir quelque chose...
En fait, j'utilise heredoc de deux manières :
1) pour élaborer un fragment html, par exemple un fomulaire, et y coller les variables. Propre, lisible, pratique, un seul echo dans le script à la fin, contrôle, maîtrise.

2) Ceux qui pratiquent xslt ne savent pas tous qu'il est possible d'utiliser heredoc pour intégrer un transformateur xsl à l'intérieur même d'un fichier php. Ainsi, il est possible de taguer directement des variables dans le code xsl, et donc de se passer de la création d'un fichier séparé, et de la transmission de variables à xsl.


$xml = $_SERVER["DOCUMENT_ROOT"] . "/data/$site_name/artistes.xml";
$rqt = ($mode=="musiciens") ? "//artistes/artiste[musicien='T']": "//artistes/artiste[visuel='F']";
$titre =...
$role = ...

$xsl=<<<EOD
<xsl:stylesheet ... >
	<xsl:template match="/">
		<h1>$titre</h1>
			<xsl:for-each select="$rqt">
				<div class="floating">
					<xsl:if test="string-length(img) > 0">
						<img src="{img}" alt="{img}" />
					</xsl:if>
					<a href="#" onclick= "loadHtm('main_pan','inc/monographie.php?id={@id}') ">
						<xsl:value-of select="prenom"/> <xsl:value-of select="nom"/>
					</a>
					<p><xsl:value-of select="$role"/></p>
				</div>
			</xsl:for-each>
	</xsl:template>
</xsl:stylesheet>
EOD;

$s = transformToHtml($xml,xsl); // fonction "maison"
echo $s;



Le résultat est impressionnant de rapidité. Sans parler le la maintenance...
Modifié par GeorgesM (17 Nov 2006 - 13:52)
Bison a écrit :
Donc en gros, il suffit d'apprendre. Smiley cligne
Je ne vois pas le rapport. Il n'y a rien à apprendre pour comprendre ton code, il est juste moins lisible.

Quant à ton obsession manifeste pour l'optimisation, je te conseille de chercher "optimisation prématurée" sur Google, tu tomberas probablement sur cette citation :
a écrit :
« L'optimisation prématurée est la source de tous les maux. », Donald Knuth citant Dijkstra
De plus, je ne crois pas que les personnes qui posent des questions sur ce forum soient intéressées par ce genre de débat.
Oui, c'est le bon sens.

D'autant plus que nous sommes en présence d'un langage interprété, c'est le moteur d'interprétation qui fixe le tempo. Et le moteur est sujet à évolution et remplacement au fil des versions de php (cf récent passage en zend).
GeorgesM a écrit :
Le résultat est impressionnant de rapidité. Sans parler le la maintenance...

Bof Smiley lol L'XSLT n'est pas ce qu'il y a de plus rapide Smiley decu Au début j'utilisais aussi XSLT comme moteur de template, mais finalement je suis revenu sur une solution basée sur du PHP normal...
Eldebaran a écrit :
Je ne vois pas le rapport. Il n'y a rien à apprendre pour comprendre ton code, il est juste moins lisible.

Rien à apprendre ?
Si la concaténation ! Smiley ohwell

GeorgesM, PHP est déjà un moteur de template Smiley cligne
Pages :