J'ai vu cette convention un peu partout, et parfois, cela me rend fou:
<?php //The loop ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; // end of the loop. ?>
Où <?php
et ?>
de fermeture figurent sur chaque ligne, même s’il n’ya pas de code HTML intermédiaire.
Ma question est: pourquoi? Pourquoi inclure toutes ces balises supplémentaires?
Pour moi, il semble que cette convention ajoute une quantité importante de fouillis au code, soit ennuyante à suivre en premier lieu, et ajoute qu'il y a beaucoup plus d'endroits où laisser accidentellement une étiquette ouverte ou fermée.
REMARQUE
C'est un code tiré du thème Twenty-Twelve, l'exemple donné par WordPress.
Ce n'est pas recommandé dans les guides de style WordPress, et je pense que c'est un mauvais style de codage. Les débutants utilisent ce style, peut-être parce que ça ressemble plus à du HTML…
Malheureusement, les thèmes par défaut utilisent trop souvent ce style. Certains débutants pourraient penser qu'il fait partie d'un style de code.
Un inconvénient de ce style est la gestion des commentaires. Examinez attentivement l'exemple suivant et voyez comment il ne répond pas à ce que l'auteur peut attendre:
<?php echo 'Important: '; // announcement ?>
<?php echo ' enter the Word '; /* start ?>
<?php echo '<b>password</b>'; /* the end */ ?>
Bonne chance pour le débogage. :)
Règle: Basculez entre PHP et le contexte HTML uniquement si vous devez créer une sortie dans les deux langues. Utilisez des sauts de ligne réguliers dans tous les autres cas.
Mise à jour, autres réflexions: Chaque fichier HTML valide est un programme complet et valide PHP. Oui, même s'il ne contient pas une seule ligne de code PHP réel.
Si vous partez du HTML et ajoutez des petits morceaux de PHP pas à pas… vous pourriez vous retrouver avec le style dont nous discutons ici. C’est là que le refactoring entre en jeu: une fois que tout fonctionne comme prévu, réécrivez le code jusqu’à ce qu’il soit aussi lisible que possible, facile à gérer et à étendre, sans répéter les parties.
Je suppose que certaines personnes sont heureuses sans cette dernière étape, et c’est pourquoi cela ne mourra pas de si tôt.
Bien que j'évite ceci pour les commentaires PHP, je suis un passionné PHP ouvreur/plus proche dans les fichiers de modèle. L'alternative consiste à faire écho à HTML via les chaînes PHP, ce qui semble encore pire à mon avis. À titre d'exemple primitif:
<!-- Example 1 -->
<ul>
<?php
foreach ( $list_items as $list_item ) {
echo "<li><a href='" . $list_item->url . "'>" . $list_item->name . "</a></li>";
}
?>
</ul>
<!-- Example 2 -->
<ul>
<?php foreach ( $list_items as $list_item ) : ?>
<li>
<a href="<?php echo $list_item->url; ?>">
<?php echo $list_item->name; ?>
</a>
</li>
<?php endforeach; ?>
</ul>
L'exemple 2 est-il plus détaillé? Peut-être? Mais plus facile à lire et à éditer, à mon avis. Vous pouvez imaginer à quel point cela peut être laid pour un code HTML complexe.
En outre, il suffit de noter que l'utilisation de endforeach
et endif
lors de l'écriture de code HTML entre votre logique PHP améliore la lisibilité d'un ton par rapport à }
.
Il s'agit d'un choix entre voir la page en tant que:
Différentes personnes ont tendance à penser différemment. Notez que les fonctions utilisent rarement ce style, car elles ressemblent davantage à un bloc de PHP pur. D'un autre côté, les modèles ne sont pas rares car ils sont plus dispersés dans les fichiers et que la quantité de code HTML pur peut facilement dépasser celle de PHP.
Si vous regardez les moteurs de templates (Moustache, Twig, etc.), ils ressemblent beaucoup à ce style, à la différence que leur syntaxe tend à éliminer la verbosité de PHP.
Post-scriptum Je veux noter que je parle de sane incorporation de PHP en HTML, pas littéralement balises ouvrantes et finales sur chaque ligne juste pour le plaisir .
Ma question est: pourquoi? Pourquoi inclure toutes ces balises supplémentaires?
La réponse est assez simple: public. Lorsque des personnes (et non des programmeurs) saisissent un thème, puis FTP leur installation, la configuration de 5min, etc., leur donne déjà l’impression de leur programmer. Lorsqu'ils veulent ensuite ajouter ou modifier une seule ligne de quel que soit dans leur thème, ils ont peut-être déjà compris ce qu'est HTML. PHP sera encore loin de leur portée. Donc, je suppose que l'idée est de permettre l'ajout ou le retrait plus facile d'éléments sans casser tout ce qui se passe lorsqu'ils commettent une erreur.
Note: Ce n'est pas ce que j'aime, préfère ou recommanderais. C'est juste ce que je pense pourquoi cela se produit.
J'ai constaté que certains nouveaux programmeurs sont formés de cette façon. Je suis un cours de 40 heures sur Lynda et l'instructeur supprime les balises PHP sur chaque ligne, à l'exception des définitions de fonctions. Il s’agit probablement de tracer des lignes claires entre HTML et PHP, ce qui aide probablement les nouvelles personnes à comprendre où se termine HTML et où commence PHP. Après cela, c'est probablement une habitude. Je commençais à m'énerver moi-même et décidais de voir si quelqu'un d'autre se plaignait.