2009-09-08 13 views
13

Solo para aclarar: Las cuestiones de "eco vs impresión" y "comillas dobles vs comillas simples" se entiende perfectamente, se trata de otra cosa:php echo vs etiqueta de apertura y cierre de

¿Hay algunas razones por las que uno prefieren:

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

sobre: ​​

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

habría cualquiera ejecutar/analizar más rápido? es mas elegante? (etc.)

Tiendo a utilizar la segunda opción, pero me preocupa que pueda pasar por alto algo obvio/esencial.

+0

Gracias por todos los comentarios, soy consciente de que esta no es una pregunta que tiene LA respuesta, pero llama la atención si no hay nada oficial en los manuales de PHP y los comentarios proporcionados han sido extremadamente útiles: no estaba al tanto las primeras opciones son mucho más legibles que las segundas, así que seguiré usando etiquetas para bloques grandes y comenzaré a usar "eco" para las cortas. – Migs

+0

Estoy de acuerdo con los sentimientos por proyecto. Si tiene mucho PHP y alguna etiqueta HTML ocasional, use la primera. Pero si tiene mucho HTML y el comando PHP ocasional, use el último (use HTML y pegue las etiquetas PHP aquí y allá); * debería * ser más rápido ya que las etiquetas ya están allí como literales, mientras que su impresión significa pasar las etiquetas como cadenas a la función de impresión/eco, que luego las imprime. Esto puede sumarse para una página principalmente HTML, pero no será mucho para una página principalmente PHP. – Synetech

Respuesta

5

El primero es mucho más legible en mi opinión, sin embargo, el segundo técnicamente implica menos análisis. Cualquier ventaja de velocidad en ese caso probablemente sería menor y realmente sin sentido sin un perfil.

Optimización prematura es la raíz de todos los males. Haga lo que hace que el código sea más fácil de leer y mantener. La eficiencia pasa a segundo plano para la mantenibilidad.

ver http://en.wikipedia.org/wiki/Optimization_%28computer_science%29#When_to_optimize para un buen consejo sobre el tema

2

El mejor es un motor de plantillas.

Pero, creo que echo es mucho más limpio y legible (al menos en este caso, como se señala en los comentarios, depende), que abrir y cerrar etiquetas en todas partes (no sé demasiado acerca de PHP internas para decir cuál es más rápido, sin embargo).

+1

La legibilidad depende en gran medida de la cantidad de texto que se emite a través de "echo", imho. Para una sola línea, cerrar y abrir etiquetas PHP es exagerado ... para una fila completa de la tabla con, por ejemplo, 20 columnas, es una historia diferente. También los editores de texto pueden resaltar HTML fuera de las etiquetas PHP, pero generalmente no dentro de las cadenas PHP. Nuevamente, eso es principalmente un problema si hay * mucho * marcado que debería emitirse. – Joey

+0

Sigo pensando que el motor de plantillas es el mejor para eso. :) Pero estás en lo correcto. –

+2

En mi humilde opinión, si utiliza algún tipo de motor MVC (y realmente debería), el sistema de plantilla es completamente inútil. Por lo que he visto en la práctica, los sistemas de plantillas son utilizados por los diseñadores web que no conocen suficiente PHP para entender lo que hace el código o por los programadores que aún no han descubierto el patrón MVC. –

2

Es muy confiable lo que escribe. PHP se puede utilizar como lenguaje de programación, o como lenguaje de plantilla web simple y potente. La combinación de estos dos usos es muy, muy mala práctica y será horrible apoyarla a largo plazo.

Por lo tanto, el segundo estilo es más útil en plantillas con gran cantidad de marcas HTML y pequeñas manchas de código, primero - para la programación 'clara' de php.

8

Beneficios de la primera

  • más fácil de leer
  • ???

Beneficios de la segunda

  • WYSIWYG es posible
  • HTML Código de finalización/Tag-Matching es posible con algunos IDE
  • hay escape de dolores de cabeza
  • más fácil para los trozos más grandes de HTML

Si tengo una gran cantidad de HTML en una rutina PHP determinada (como una vista MVC), entonces definitivamente uso el segundo método. Pero lo formato de manera diferente: confío estrictamente en la naturaleza de etiqueta de las demarcaciones de PHP, es decir, Hago las secciones de PHP se ven tanto como etiquetas HTML como pueda

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

Me gusta esto incluso mejor que mi propia respuesta, así que +1 de mí :) –

2

El primero es más fácil de leer desde el punto de vista de programación, pero el segundo le permite abrir el archivo en algún editor WYSIWYG HTML y el cambio el diseño de la página.

Yo prefiero la segunda opción, ya que es mucho más fácil decirle a su diseñador que "esta parte de la página se comportará como que", que "este pedazo de código hace que"

+0

+1, la segunda solución hace la vida más fácil con diseñadores que no conocen PHP y no quieren aprender. Aún así, la solución óptima serían las plantillas, pero ... –

7

Estoy de acuerdo con Peter Bailey. Sin embargo, en las vistas utilizo la sintaxis alternativa para las declaraciones, y prefiero las etiquetas cortas (particularmente para hacer eco). Entonces, el ejemplo anterior leería en su lugar:

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

Creo que este es el estándar preferido para Zend Framework.

+0

Llegaste antes que yo;) Esta es la sintaxis que uso la mayoría de las veces (aunque pondría ese foreach en su propia línea). – DisgruntledGoat

+0

Hola, voidstate, usualmente evité las etiquetas cortas debido a la frase de documentación: "Se deben evitar el uso de etiquetas cortas al desarrollar aplicaciones o bibliotecas destinadas a la redistribución", pero una vez más, la comunidad ha hablado con la mayoría de los votos, qué ¿Me he perdido? – Migs

+0

Donde trabajo tengo control sobre los servidores, así que no es un problema para mí y hace que las vistas sean mucho más legibles. Aquí está el documento Zend Framework: http://framework.zend.com/manual/en/zend.view.html # zend.view.introduction.shortTags Se sugiere cambiar la configuración php_ini en un archivo .htaccess con el siguiente: php_value "short_open_tag" "en" – voidstate

Cuestiones relacionadas