62 votes

Comment indenter correctement le code mixte PHP/HTML ?

Lorsque vous mélangez PHP et HTML, quel est le style d'indentation approprié à utiliser ? Dois-je utiliser l'indentation de façon à ce que le HTML soit correctement indenté, ou pour que le mélange PHP/HTML soit correctement formaté (et donc plus facile à lire) ?

Par exemple, disons que j'ai un foreach boucle de sortie des lignes du tableau. Laquelle des propositions ci-dessous est correcte ?

Le mélange PHP/HTML semble correct :

<table>
  <?php foreach ($rows as $row): ?>
    <tr>
      <?php if ($row->foo()): ?>
        <?php echo $row ?>
      <?php else: ?>
        Something else
      <?php endif ?>
    </tr>
  <?php endforeach ?>
</table>

Le HTML produit semble correct :

<table>
<?php foreach ($rows as $row): ?>
  <tr>
  <?php if ($row->foo()): ?>
    <?php echo $row ?>
  <?php else: ?>
    Something else
  <?php endif ?>
  </tr>
<?php endforeach ?>
</table>

J'ai constaté que lorsque je me trouve dans cette situation (assez fréquemment), je n'ai pas de style standard à utiliser. Je sais qu'il n'y a peut-être pas de réponse "correcte", mais j'aimerais connaître l'avis d'autres développeurs.

47voto

chaos Points 69029

Le PHP et le HTML doivent être indentés de manière à être corrects l'un par rapport à l'autre dans la forme source, indépendamment l'un de l'autre et de la forme sortie :

<table>
<?php foreach ($rows as $row): ?>
    <tr>
    <?php if ($row->foo()): ?>
        <?php echo $row ?>
    <?php else: ?>
        Something else
    <?php endif ?>
    </tr>
<?php endforeach ?>
</table>

14voto

Mark Points 49079

J'ai souvent réfléchi à cette question, mais je me suis ensuite rendu compte que l'aspect de la sortie HTML importait peu. Vos utilisateurs ne devraient pas regarder votre HTML de toute façon. C'est pour VOUS à lire, et peut-être quelques autres développeurs. Gardez le source Le code doit être aussi propre que possible et ne pas se soucier de l'aspect de la sortie.

Si vous avez besoin de déboguer la sortie, utilisez Chrome Developer Tools, Firebug, ou même F12 Tools.

10voto

tj111 Points 12313

Je mets généralement ouverture du site Les balises php au début de la ligne, mais indenter ce qui se trouve à l'intérieur des balises pour correspondre au formatage html. Je ne le fais pas, cependant, pour les simples déclarations d'écho puisque j'utilise des balises courtes. Je pense que cela simplifie la navigation dans le fichier pour trouver toutes les déclarations.

    <table>
<?  foreach ($foo as $bar): ?>
      <tr>
<?    foreach ($bar as $baz): ?>

         <td><?=$baz?></td>

<?    endforeach ?>
      </tr>
<?  endforeach ?>
    </table>

4voto

Treb Points 11153
  1. Réponse directe à votre question : Si vous devez lire souvent la sortie HTML, il peut être intéressant de produire du HTML bien indenté. Mais le cas le plus courant est celui où vous devez lire votre code source php, il est donc plus important que la source soit facilement lisible.
  2. Alternative aux deux options que vous avez mentionnées : Voir chaos ou de tj111 réponse.
  3. C'est encore mieux à mon avis : Ne mélangez pas HTML et php, utilisez plutôt un moteur de modèles.

2voto

Peter Spain Points 911

Vous pouvez toujours utiliser un peu d'espace pour faciliter la lecture. En s'appuyant sur l'indentation de chaos :

<table>

<?php foreach ($rows as $row): ?>

    <tr>

    <?php if ($row->foo()): ?>
        <?php echo $row ?>
    <?php else: ?>

        Something else

    <?php endif ?>

    </tr>

    <?php endforeach ?>

</table

Le seul inconvénient avec ceci est que si vous avez beaucoup de code mixte, il peut rendre votre document deux fois plus long, ce qui entraîne un défilement plus important. Si vous avez autant de code mixte, vous devriez peut-être envisager d'utiliser un moteur de création de modèles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X