¿Por qué? php y? en cada linea

23

He visto esta convención prácticamente en todas partes, y, a veces, se acerca a volverme loco:

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

Donde el <?php y el cierre ?> están en cada línea, incluso si no hay un código HTML intermedio.

Mi pregunta es: ¿Por qué? ¿Por qué incluir todas estas etiquetas adicionales?

Para mí, parece que esta convención agrega una cantidad significativa de desorden al código, es un fastidio seguirlo en primer lugar y agrega que hay muchos más lugares para omitir accidentalmente una etiqueta de apertura o cierre.

NOTA

Este es un código extraído del tema Twenty-Twelve, el ejemplo dado por WordPress.

    
pregunta Indigenuity 10.01.2013 - 00:04

5 respuestas

21

Esto no se recomienda en ninguna guía de estilo de WordPress, y creo que es un estilo de codificación incorrecto. Los principiantes están usando este estilo, tal vez porque se parece más a HTML ...

Desafortunadamente, los temas predeterminados utilizan este estilo con demasiada frecuencia, por lo que algunos principiantes pueden pensar que es parte de un estilo de código.

Una desventaja de este estilo es el manejo de comentarios. Mire detenidamente el siguiente ejemplo y cómo no hace lo que el autor podría esperar:

<?php echo 'Important: '; // announcement ?>
<?php echo ' enter the word '; /* start ?>
<?php echo '<b>password</b>'; /* the end */ ?>

Buena suerte depurando eso. :)

Regla: cambie entre el contexto de PHP y HTML solo si tiene que crear una salida en ambos idiomas. Utilice saltos de línea regulares en todos los demás casos.

Actualización, más ideas: Cada archivo HTML válido es un programa PHP completo y válido. Sí, incluso si no contiene una sola línea de código PHP real.

Si comienzas desde HTML y agregas pequeños fragmentos de PHP paso a paso ... podrías terminar con el estilo que estamos discutiendo aquí. Ahí es donde refactorización entra en juego: una vez que todo se ejecuta como se esperaba, reescriba el código hasta que sea lo más legible posible, fácil de mantener y extender, sin repetir partes.

Supongo que algunas personas están felices sin este último paso, y es por eso que no morirá pronto.

    
respondido por el fuxia 10.01.2013 - 00:09
12

Aunque evito esto para los comentarios de PHP, soy un ávido abridor de PHP en los archivos de plantilla. La alternativa consiste en hacer eco de HTML a través de cadenas de PHP, que en mi opinión se ve aún peor. Como ejemplo primitivo:

<!-- 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>

¿El ejemplo 2 es más detallado? ¿Quizás? Pero más fácil de leer y editar, en mi opinión. Puedes imaginar lo feo que puede llegar a ser para un HTML complejo.

También, solo como una nota al margen: el uso de endforeach y endif al escribir HTML entre su lógica PHP mejora la legibilidad de ton en comparación con } .

    
respondido por el Andy Adams 10.01.2013 - 02:01
10

Se trata de elegir entre ver la página como:

  • como entidad completamente generada por PHP
  • como plantilla de documento HTML, impulsada por etiquetas de plantilla PHP

Diferentes personas tienden a pensar de manera diferente. Tenga en cuenta que las funciones rara vez usan este estilo, porque se sienten más como un bloque de PHP puro. Por otra parte, no es infrecuente en las plantillas porque están más distribuidas en los archivos y la cantidad de HTML puro puede ser mucho más que la de PHP.

Si te fijas en los motores de plantillas (Moustache, Twig, etc.), se parecen mucho a este estilo, excepto que su sintaxis tiende a eliminar la verbosidad de PHP simple.

PD: Debo señalar que estoy hablando de sane incrustar PHP en HTML, no literalmente abriendo y terminando etiquetas en cada línea solo por el bien de eso.

    
respondido por el Rarst 10.01.2013 - 00:54
2
  

Mi pregunta es: ¿Por qué? ¿Por qué incluir todas estas etiquetas adicionales?

La respuesta es bastante simple: audiencia. Cuando las personas (no los programadores) toman un tema, luego transfieren su instalación por FTP, ejecutando la configuración de 5min, etc. ya se siente como una programación para ellos. Cuando luego quieran agregar o cambiar una sola línea de lo que sea en su tema, entonces tal vez ya hayan descubierto qué es HTML. PHP todavía estará lejos de su alcance. Así que mi conjetura es que la idea detrás de esto es permitir agregar o eliminar elementos con mayor facilidad sin romper todo cuando cometen un error.

Nota: Esto no es lo que me gusta, prefiero o recomendaría. Es justo lo que pienso por qué sucede esto.

    
respondido por el kaiser 28.01.2013 - 05:26
0

He encontrado que algunos nuevos programadores están entrenados de esta manera. Estoy siguiendo un curso de 40 horas en Lynda y el instructor está eliminando etiquetas PHP en todas las líneas, con la excepción de las definiciones de funciones. Es probable que se dibujen líneas claras entre HTML y PHP, lo que probablemente ayuda a las nuevas personas a comprender dónde termina el HTML y dónde comienza el PHP. Después de eso, es probablemente un hábito. Yo mismo estaba empezando a molestarme y decidí ver si alguien más se estaba quejando.

    
respondido por el Kitt Parker 16.05.2016 - 16:05

Lea otras preguntas en las etiquetas