10-06-2009, 07:51 PM
La lisibilité et la maintenabilité du code doit l'emporter sur les performances. Grappiller quelques millisecondes grâce à la syntaxe du code n'est jamais une bonne idée quand ça diminue la lisibilité.
Cela est d'autant plus vrai dans un tel cas où la différence en terme de performances est presque nulle alors que la différence en terme de lisibilité est énorme. Mieux vaut éviter les echo à rallonge.
Les guillemets simples sont plus rapides, mais moins lisibles.
Prenons maintenant l'exemple d'une vraie application avec un bout de code qui générera le code HTML suivant :
Avec des guillemets simples et des balises HTML affichées par echo :
Avec des guillemets doubles et des balises HTML affichées par echo :
Façon moteur de template :
Il faut faire son choix. Quand je développais en PHP, j'utilisais la dernière solution, qui se révèle bien plus clair sur une grande page et plus facile à maintenir pour un intégrateur HTML qui aurait vite tout cassé avec les deux premières notations.
Depuis quelques mois, je suis passé à Ruby on Rails et Haml, et voilà ce que ça donne :
Sephi-Chan
Cela est d'autant plus vrai dans un tel cas où la différence en terme de performances est presque nulle alors que la différence en terme de lisibilité est énorme. Mieux vaut éviter les echo à rallonge.
Les guillemets simples sont plus rapides, mais moins lisibles.
$nourriture = "jambon fumé";
echo 'Moi j\'aime le ' . $nourriture . ' !';
echo "Moi j'aime le $nourriture !";
Prenons maintenant l'exemple d'une vraie application avec un bout de code qui générera le code HTML suivant :
<p>Robert travaille sur 2 projets.</p>
<ul>
<li><a href="projects/27">Jambon fumé</a></li>
<li><a href="projects/31">Pâté en croûte</a></li>
</ul>
Avec des guillemets simples et des balises HTML affichées par echo :
echo '<p>' . $user->username . ' travaille sur ' . count($projects) . ' projets.</p>';
echo '<ul>';
foreach($projects as $project){
echo '<li><a href="projects/'. $project['id'] .'">' . $project['title'] . '</a></li>';
}
echo '</ul>';
Avec des guillemets doubles et des balises HTML affichées par echo :
echo "<p>{$user->username} travaille sur " . count($projects) . ' projets.</p>';
echo '<ul>';
foreach($projects as $project){
echo "<li><a href='projects/{$project['id']}'>{$project['title']}</a></li>";
}
echo '</ul>';
Façon moteur de template :
<p><?= $user->username ?> travaille sur <?= count($projects) ?> projets.</p>
<ul>
<?php foreach($projects as $project): ?>
<li><a href="projects/<?= $project['id'] ?>"><?= $project['title'] ?></a></li>
<?php endforeach; ?>
</ul>
Il faut faire son choix. Quand je développais en PHP, j'utilisais la dernière solution, qui se révèle bien plus clair sur une grande page et plus facile à maintenir pour un intégrateur HTML qui aurait vite tout cassé avec les deux premières notations.
Depuis quelques mois, je suis passé à Ruby on Rails et Haml, et voilà ce que ça donne :
%p== #{@user.username} travaille sur #{@user.projects.length} projets.</p>
%ul
- for project in @user.projects
%li= link_to project
Sephi-Chan