2009-09-08 7 views
13

Juste pour clarifier: Les questions « écho vs print » et « guillemets doubles vs guillemets simples » sont parfaitement compris, il est question une autre chose:php echo vs tag ouvert et fermer

Y a-t-il des raisons pour lesquelles on aurait préfèrent:

echo '<table>'; 
foreach($lotsofrows as $row) 
{ 
    echo '<tr><td>',$row['id'],'</td></tr>'; 
} 
echo '<table>'; 

sur:

<table><?php 
     foreach($lotsofrows as $row) 
     { ?> 
      <tr> 
       <td><?php echo $row['id']; ?></td> 
      </tr><?php 
     } ?> 
</table> 

serait l'une exécution/analyser plus rapidement? est plus élégant? (etc)

J'ai tendance à utiliser la deuxième option, mais je crains de ne pas voir quelque chose d'évident/d'essentiel.

+0

Merci pour tous les commentaires, je suis conscient que ce n'est pas une question qui a LA réponse, mais cela demande un peu d'attention s'il n'y a rien d'officiel dans les manuels PHP et les commentaires fournis ont été extrêmement utiles. les premières options sont beaucoup plus lisibles que la seconde, donc je vais continuer à utiliser des tags pour les gros blocs et commencer à utiliser "echo" pour les plus courts. – Migs

+0

Je suis d'accord avec les sentiments par projet. Si vous avez beaucoup de PHP et la balise HTML occasionnelle, utilisez l'ancien. Mais si vous avez beaucoup de HTML et la commande PHP occasionnelle, utilisez ce dernier (utilisez le HTML et collez les balises PHP ici et là); il * devrait * être plus rapide puisque les balises sont déjà là en tant que littéraux alors que les imprimer signifie passer les balises comme des chaînes à la fonction print/echo, qui les imprime ensuite. Cela peut ajouter pour une page principalement HTML, mais ne sera pas beaucoup pour une page principalement PHP. – Synetech

Répondre

5

Le premier est beaucoup plus lisible à mon avis, cependant, le second implique moins d'analyse syntaxique. Tout avantage de vitesse dans ce cas serait probablement mineur et vraiment sans signification sans profilage.

L'optimisation prématurée est la racine de tout mal. Faites ce qui rend le code le plus facile à lire et à maintenir. L'efficacité prend le pas sur la maintenabilité.

voir http://en.wikipedia.org/wiki/Optimization_%28computer_science%29#When_to_optimize pour quelques bons conseils sur le sujet

2

Le meilleur est un moteur de template. Mais, je pense que l'écho est beaucoup plus propre et plus lisible (du moins dans ce cas - comme indiqué dans les commentaires, ça dépend), que d'ouvrir et de fermer des balises partout (je ne sais pas trop sur les internes de PHP dire lequel est le plus rapide, cependant).

+1

La lisibilité dépend beaucoup de la quantité de texte émise par 'echo', imho. Pour une seule ligne de fermeture et d'ouverture de balises PHP est trop ... pour une ligne de table complète avec, comme, 20 colonnes, c'est une histoire différente. Les éditeurs de texte peuvent également mettre en évidence HTML en dehors des balises PHP, mais généralement pas dans les chaînes PHP. Encore une fois, c'est surtout un problème s'il y a * beaucoup * de balisage qui devrait être émis. – Joey

+0

Je pense toujours que le moteur de template est le meilleur pour ça. :) Mais tu as raison. –

+2

IMHO, si vous utilisez une sorte de moteur MVC (et vous devriez vraiment), le système de gabarit est complètement inutile. D'après ce que j'ai vu en pratique, les systèmes de gabarits sont soit utilisés par des concepteurs de sites Web qui ne connaissent pas suffisamment PHP pour comprendre ce que fait le code, soit par des programmeurs qui n'ont pas encore découvert le modèle MVC. –

2

C'est très fiable ce que vous écrivez. PHP peut être utilisé comme langage de programmation, ou comme langage de template web simple et puissant. Mélange de ces deux usages très, très mauvaise pratique et sera horrible à supporter à long terme. Donc, le second style est plus utilisable dans les templates avec beaucoup de balisage html et de petites taches de code, d'abord - pour une programmation PHP 'claire'.

8

Avantages du premier

  • plus facile à lire
  • ???

Avantages de la deuxième

  • WYSIWYG est possible
  • HTML complétion de code/Tag-adéquation possible avec des IDEs
  • ne peut échapper des maux de tête
  • plus facile pour les grands morceaux de HTML

Si j'ai beaucoup de HTML dans une routine PHP donnée (comme une vue MVC) alors j'utilise définitivement la 2ème méthode. Mais je le formate différemment - je me fie strictement à la nature de tag des démarcations de PHP, c'est-à-dire, Je fais les sections PHP ressemblent autant balises HTML que je peux

<table> 
    <?php foreach($lotsofrows as $row) { ?> 
    <tr> 
    <td><?php echo $row['id']; ?></td> 
    </tr> 
    <?php } ?> 
</table> 
+0

J'aime encore mieux que ma propre réponse, donc +1 de moi :) –

2

Le premier est plus lisible du point de vue de la programmation, mais la seconde vous permet d'ouvrir le fichier dans un éditeur HTML WYSIWYG et le changement le design de la page.

Je préfère la deuxième option, car il est beaucoup plus facile de dire à votre concepteur que « cette partie de la page se comporte comme ça », que « ce morceau de code fait que »

+0

+1, la deuxième solution rend la vie plus facile avec des concepteurs qui ne connaissent pas PHP et ne veulent pas apprendre. Pourtant, la solution optimale serait des modèles, mais ... –

7

Je suis d'accord avec Peter Bailey. Cependant, dans les vues, j'utilise la syntaxe alternative pour les instructions, et préfère de loin les balises courtes (en particulier pour l'écho). Donc, l'exemple ci-dessus serait plutôt lire:

<table> 
    <? foreach($lotsofrows as $row): ?> 
    <tr> 
    <td><?= $row['id']; ?></td> 
    </tr> 
    <? endforeach; ?> 
</table> 

Je crois que c'est la norme préférée pour Zend Framework.

+0

Vous êtes là avant moi;) C'est la syntaxe que j'utilise la plupart du temps (bien que je l'ai mis foreach sur sa propre ligne). – DisgruntledGoat

+0

Salut there voidstate, j'ai généralement évité les balises courtes à cause de la phrase de la documentation: "L'utilisation de balises courtes devrait être évitée lors du développement d'applications ou de bibliothèques destinées à la redistribution". ai-je manqué? – Migs

+0

Où je travaille j'ai le contrôle sur les serveurs donc ce n'est pas un problème pour moi et il rend les vues beaucoup plus lisibles IMO. Voici le document Zend Framework: http://framework.zend.com/manual/en/zend.view.html # zend.view.introduction.shortTags Il propose de modifier le réglage php_ini dans un fichier .htaccess en utilisant les éléments suivants: php_value « short_open_tag » « sur » – voidstate