Cadena entre comillas simples en varias líneas

Estoy trabajando en este libro de PHP y MySQL y me encontré con algo bastante diferente a lo que estoy acostumbrado cuando se trata de hacer eco de varias líneas de una sola cadena entre comillas.

El ejemplo dado es este:

    echo '<table align="center" cellspacing="0" cellpadding="5" width="75%">
        <tr>
          <td align="left"><b>This</b></td>
          <td align="left"><b>That</b></td>
          <td align="left"><b>Then</b></td>
          <td align="left"><b>When</b></td>
          <td align="left"><b>What</b></td>
        </tr>';

Obviamente, podría salir de PHP y usar HTML, pero esto no siempre es una opción. Y cuando no tengo esa opción, generalmente divido mi cadena para facilitar la lectura como tal:

    echo '<table align="center" cellspacing="0" cellpadding="5" width="75%">' . 
      '<tr>'
        '<td align="left"><b>This</b></td>' . 
        '<td align="left"><b>That</b></td>' . 
        '<td align="left"><b>Then</b></td>' . 
        '<td align="left"><b>When</b></td>' . 
        '<td align="left"><b>What</b></td>' . 
      '</tr>';

El autor de este libro es muy respetado en la comunidad php, y el libro es altamente recomendado y tiene buenas reseñas... Así que mi pregunta es la siguiente:

¿Hay algo malo con su método y debería practicarse?

preguntado el 12 de junio de 12 a las 21:06

No tiene nada de malo, pero considere usar heredoc syntax para cadenas de varias líneas. -

¿Por qué la segunda versión es más fácil de leer que la primera? Yo diría lo contrario, con toda la puntuación añadida ahí... -

La segunda forma fue la forma original en que aprendí a hacer eco de cadenas de varias líneas. Me llenó de ternura saber que no había espacios ni tabulaciones adicionales. Pero como puede ver, podría equivocarme fácilmente: Falta un punto en la línea 2. -

Si solo observa el rendimiento, es un poco más rápido generar HTML sin espacios en blanco adicionales, pero tal vez el autor lo haga de esa manera porque desea generar HTML que también sea legible para los humanos :-) Además, todas esas concatenaciones de cadenas aumentan la sobrecarga sólo un poco. -

"Obviamente, podría salir de PHP y usar HTML, pero esta no siempre es una opción". - Incorrecto. Cuando se trata de generar texto, esa es -siempre- una opción. -

2 Respuestas

No, no tiene nada de malo. Solo tenga en cuenta que los espacios, las tabulaciones y los retornos de línea en la cadena citada también se generarán. Eso rara vez es un problema, solo algo para recordar.

Para mí, es un poco más fácil de leer y un poco más difícil equivocarse que a tu manera. De hecho, su ejemplo tiene un error de sintaxis. ¿Puedes encontrar el punto que falta?

Respondido el 12 de junio de 12 a las 21:06

Esta característica está ahí en netbeans. Si está escribiendo una cadena y presiona retorno, la línea actual se cierra con comillas y la nueva línea se concatena. - bronco

Hay aún más posibilidades

?>
<table align="center" cellspacing="0" cellpadding="5" width="75%">
    <tr>
      <td align="left"><b>This</b></td>
      <td align="left"><b>That</b></td>
      <td align="left"><b>Then</b></td>
      <td align="left"><b>When</b></td>
      <td align="left"><b>What</b></td>
    </tr>
<?php

or

echo <<<HTML
<table align="center" cellspacing="0" cellpadding="5" width="75%">
    <tr>
      <td align="left"><b>This</b></td>
      <td align="left"><b>That</b></td>
      <td align="left"><b>Then</b></td>
      <td align="left"><b>When</b></td>
      <td align="left"><b>What</b></td>
    </tr>
HTML;

El primero se reconoce como HTML en cada IDE, el segundo al menos en PHPStorm y, por lo tanto, los IDE pueden resaltarlo utilizando HTML-syntax-highlighting, que es un enorme beneficio en comparación con su ambas ejemplos (Nota al margen: PHPStorm también resalta html en cadenas, por lo que no es tan malo;) Pero, por lo que recuerdo, no puede validar html en cadenas)

Además, debe separar la salida del código de procesamiento

Respondido el 12 de junio de 12 a las 21:06

El primero es lo que quise decir al salir de php: jremydeaton

Ah, está bien, ya veo. Si separa la vista de la capa de aplicación (uno puede llamar a eso "plantilla"), entonces esto es siempre una opción :) - reycrunch

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.