J'ai vu cette convention à peu près partout, et, à certains moments, elle me rend presque fou:
<?php //The loop ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; // end of the loop. ?>
Où le <?php
et la fermeture se ?>
trouvent sur chaque ligne, même s'il n'y a 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 d'encombrement au code, est ennuyeuse à suivre en premier lieu et ajoute que beaucoup plus d'endroits pour laisser accidentellement à l'écart une balise d'ouverture ou de fermeture.
REMARQUE
Il s'agit d'un code tiré du thème Twenty-Twelve, l'exemple donné par WordPress.
php
theme-development
customization
Indigénéité
la source
la source
Réponses:
Ce n'est recommandé dans aucun guide de style WordPress, et je pense que c'est un mauvais style de codage. Les débutants utilisent ce style, peut-être parce qu'il ressemble plus au HTML…
Malheureusement, les thèmes par défaut utilisent ce style trop souvent, donc 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 comment il ne fait pas ce à quoi l'auteur peut s'attendre:
Bonne chance pour déboguer ça. :)
Règle: basculez entre le contexte PHP et 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, réflexions supplémentaires: chaque fichier HTML valide est un programme PHP complet et valide. 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 à maintenir 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 bientôt.
la source
<? ... ?>
pour rendre l'imbrication plus facile à comprendre. Une chose que je ferais différemment de l'exemple du PO, c'est que je mettraisthe_post();
sa propre ligne.Bien que j'évite cela pour les commentaires PHP, je suis un passionné d'ouvreur / plus proche de PHP dans les fichiers de modèle. L'alternative consiste à faire écho au HTML via des chaînes PHP, ce qui est encore pire à mon avis. À titre d'exemple primitif:
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 du HTML complexe.
En outre, juste comme remarque: l'utilisation
endforeach
etendif
lors de l'écriture de HTML entre votre logique PHP améliore la lisibilité d'une tonne par rapport à}
.la source
}
plusendif
cependant est que (dans de nombreux éditeurs) , vous pouvez facilement voir où l'ouverture{
est donc de savoir si tout est bien fermé. Essayez de comprendre cela avecendif
tout un tas de conditions ...foreach ( $list_items as $list_item ) printf( '<li><a href="%1$s">%2$s</a></li>', $list_item->url, $list_item->name );
- deux lignes, HTML et PHP bien séparées. : P<? ... ?>
et<?= ... ?>
.endif
tous les éditeurs décents.Il s'agit de choisir entre voir la page comme:
Différentes personnes ont tendance à y penser différemment. Notez que les fonctions utilisent rarement ce style, car elles ressemblent plus à des blocs de PHP pur. D'un autre côté, ce n'est pas rare dans les modèles car ils sont plus répartis sur les fichiers et la quantité de HTML pur peut être facilement supérieure à celle de PHP.
Si vous regardez les moteurs de modèles (Moustache, Twig, etc.) - ils ressemblent beaucoup à ce style, sauf que leur syntaxe a tendance à éliminer la verbosité du PHP ordinaire.
PS Je tiens à noter que je parle de l' intégration saine de PHP dans HTML, et non littéralement d' ouvrir et de terminer des balises sur chaque ligne juste pour le plaisir.
la source
La réponse est assez simple: le public. Lorsque les gens (pas les programmeurs) saisissent un thème, puis FTPing leur installation, l'exécution de la configuration 5min et ainsi de suite se sent déjà comme la programmation pour eux. Quand ils veulent ensuite ajouter ou modifier une seule ligne de tout dans leur thème, ils ont peut-être déjà compris ce qu'est le HTML. PHP sera encore loin de leur portée. Donc, je suppose que l'idée derrière cela est de permettre l'ajout ou la suppression d'éléments plus facilement sans casser tout ce qu'ils font.
Remarque: ce n'est pas ce que j'aime, préfère ou recommanderais. C'est juste ce que je pense pourquoi cela se produit.
la source
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 fonction. C'est probablement pour tracer clairement des lignes entre HTML et PHP, ce qui aide probablement les nouvelles personnes à comprendre où HTML se termine et PHP commence. Après cela, c'est probablement une habitude. Je commençais à m'énerver et j'ai décidé de voir si quelqu'un d'autre se plaignait.
la source