Pourquoi avoir? php et? sur chaque ligne

23

J'ai vu cette convention un peu partout, et parfois, cela me rend presque dingue:

<?php //The loop ?>
<?php while ( have_posts() ) : the_post(); ?>
    <?php the_content(); ?>
<?php endwhile; // end of the loop. ?>

<?php et ?> de fermeture se trouvent sur chaque ligne, même s'il n'y a pas de code HTML intermédiaire.

Ma question est la suivante: 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 que de nombreux autres endroits pour omettre accidentellement 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.

    
posée Indigenuity 10.01.2013 - 00:04
la source

5 réponses

21

Cela n’est recommandé dans aucun guide de style WordPress, et j’estime 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.

L'un des inconvénients 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 déboguer cela. :)

Règle: Basculez entre les contextes 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, autres réflexions: 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 étape par étape… 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.

    
réponse donnée fuxia 10.01.2013 - 00:09
la source
12

Bien que je l'évite pour les commentaires PHP, je suis un ouvreur / rappeur avid de PHP dans les fichiers de modèle. L'alternative consiste à faire écho au HTML via des chaînes PHP, ce qui semble encore pire à mon avis. Comme 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, notez simplement que l'utilisation de endforeach et de endif lors de l'écriture de code HTML entre votre logique PHP améliore la lisibilité d'un ton par rapport à } .

    
réponse donnée Andy Adams 10.01.2013 - 02:01
la source
10

Il s'agit de choisir entre voir la page comme:

  • en tant qu'entité complètement générée par PHP
  • en tant que modèle de document HTML, optimisé par les balises de modèle PHP

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. En revanche, 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 examinez les moteurs de templates (Moustache, Twig, etc.), ils ressemblent beaucoup à ce style, à la différence que leur syntaxe tend à éliminer la verbosité de PHP pur.

PS: je tiens à signaler que je parle d’intégration saine de PHP dans HTML, et non de balises littéralement ouvrant et terminant les balises toutes les . juste pour le plaisir.

    
réponse donnée Rarst 10.01.2013 - 00:54
la source
2
  

Ma question est: pourquoi? Pourquoi inclure toutes ces balises supplémentaires?

La réponse est assez simple: audience. Lorsque des personnes (et non des programmeurs) saisissent un thème, puis FTP, leur installation, la configuration de 5 minutes, etc., leur donne déjà l’impression de les programmer. Lorsqu'ils souhaitent ensuite ajouter ou modifier une seule ligne de quel que soit leur thème, ils ont peut-être déjà compris ce qu'est le code HTML. PHP sera toujours loin de leur portée. Donc, je suppose que l'idée est de permettre l'ajout ou la suppression plus facile d'éléments sans casser tout ce qui se passe lorsqu'ils commettent une erreur.

Remarque: ce n'est pas ce que j'aime, préfère ou recommanderais. C’est ce que je pense, pourquoi cela se produit.

    
réponse donnée kaiser 28.01.2013 - 05:26
la source
0

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 dépose des 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 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.

    
réponse donnée Kitt Parker 16.05.2016 - 16:05
la source

Lire d'autres questions sur les étiquettes