2011-01-13 18 views
10

Algunos códigos PHP que miro están llenos de etiquetas "<? Php" y "? >" dependiendo de si emite HTML o no. ¿Hay algún beneficio de rendimiento en esto en lugar de usar echo para escribir el HTML? Hace que el código sea extremadamente difícil de leer cuando el código cambia constantemente entre código y HTML a través de la etiqueta <? Php.Uso intensivo de la etiqueta "<? Php" de PHP

Tenga en cuenta que no estoy hablando solo de la conversión ocasional. El código que estoy viendo actualmente (el código fuente de mantis-bt) me está dando dolor de cabeza con la cantidad de veces que está cambiando. Muy, muy difícil de leer. Me pregunto si hay una razón para que lo hagan así?

+4

no es un problema de rendimiento a menos que sea Facebook. –

+2

Cuando la página es en su mayoría HTML, el consenso (por un pequeño margen de todos modos) parece ser que el uso intensivo del eco es de mala calidad. Por otro lado, si la página no separa la lógica de control y la lógica de negocios de la pantalla, también se considera una mala forma. He oído de forma anecdótica que la sobrecarga para 'echo' es comparable a la sobrecarga de la conexión y la desconexión de los bloques' ', pero no puedo encontrar una referencia para ti. – RobertB

+0

Independientemente del clima en su facebook, debe escuchar y aprender los métodos que Facebook usa, junto con muchos otros sitios grandes. – RobertPitt

Respuesta

17

En cuanto a la legibilidad va, yo preferiría ver:

<ul> 
     <?php foreach ($items as $item): ?> 
      <li> 
       <a href="<?php esc($item->url)?>"> 
       <img src="<?php esc($item->icon)?>"/> 
       <?php esc($item->text)?> 
      </li> 
     <?php endforeach; ?> 
    </ul> 

de: trabajo

echo "<ul>"; 
    foreach ($items as $item) 
    { 
    echo "<li>"; 
    echo '<a href="'.esc($item->url).'">'; 
    echo '<img src="'.esc($item->icon).'"/>'; 
    echo esc($item->text); 
    echo '</li>'; 
    } 
    echo "</ul>"; 

No sólo eso, sino que este último le permite a su IDE de elección manejar la sintaxis HTML y formato (diciéndole, por ejemplo, que falta el </a>). Entonces, a menos que haya mucho más en medio de los breves bits de HTML, podría ser preferible <?php.

EDIT: en cuanto a rendimiento, cualquier persona seria acerca de la velocidad de código activará un precompilador de caché que reducirá ambas versiones exactamente a la misma.

+0

en lugar del icono ' '¿Por qué no' img ($ item-> icon) ' – RobertPitt

+0

@Robert es posible que desee agregar un texto alternativo a esa cosa. – PeeHaa

+0

entonces 'img ($ item-> icon," location "," alt ", array (" classes "," here "))' simplemente parece mucho más ordenado y cuando obtienes plantillas de usuarios regulares, cumpliría con tu html creación reduciendo así html no válido – RobertPitt

0

Si bien esto no produciría ningún efecto notable en cuanto al tiempo de ejecución del código, la idea de que este es el único lugar donde debería calcularse "Rendimiento" es ridícula. Los desarrolladores cuestan dinero. ¡Así que limpiar todo esto ES un impulso en el rendimiento! ¡Tu propio desempeño!

Así que hazlo.

0

PHP ofrece algunas características que no son ofrecidas por HTML, como bucles. Por lo tanto, si tiene que usar loops varias veces en su código, debe seguir cambiando entre las etiquetas php y HTML. Además, PHP te ayuda a implementar el control de sesión que no está permitido por HTML. Por lo tanto, es importante incrustar PHP en HTML

En pocas palabras, para utilizar las funciones adicionales que tenemos que utilizar PHP o algún otro idioma

+0

Creo que estás malinterpretando mi pregunta. No estoy preguntando por qué uso PHP. Estoy preguntando por qué el código que contiene una gran cantidad de código PHP siente la necesidad de cambiar a no-PHP constantemente solo para repetir un poco de HTML. En lugar de simplemente usar el comando echo. – Dan

2

razón que podría ser como que es para situaciones como ésta:

<?php if($logged_in) { ?> 
    <span class="x">Welcome, <?= $_SESSION['user'] ?></span> 
    <a href="logout.php">Logout</a> 
<?php } ?> 

en lugar de:

<?php 
    if($logged_in) { 
     echo "<span class=\"x\">Welcome, " . $_SESSION['user'] . "</span>"; 
     echo "<a href=\"logout.php\">Lougout</a>"; 
    } 
?> 

Hay menos caracteres de escape que preocuparse.

+1

Pero en su ejemplo, podría haber utilizado una sola cita en lugar de escapar de ellas. – Dan

+1

¿Por qué no usa solo comillas simples? – PeeHaa

+1

Personalmente, me gusta mejor el mejor ejemplo. Si desea cambiar su HTML o recibir una actualización desde otra página, es más fácil hacerlo. – Don

3

No hay motivo alguno aparte de sus scripting para principiantes, simplemente tratando de llevar los resultados a la página sin ningún pensamiento arquitectónico o planificación en el sistema en el largo plazo.

Lo que debe hacer es dividir su diseño lejos de su código php lógico, y la compilación del diseño debe hacerse al final del tiempo de ejecución de los scripts.

Si rediseña la aplicación, ciertamente le recomendaría que empiece con un framework porque el framework forzará los malos hábitos por su diseño.

Comience con codeigniter y cree un blog simple, entienda cómo conectar/insertar/seleccionar/actualizar con la base de datos, aprenda cómo manejar sesiones, conozca los Controladores y los principios para crear uno.

Después de haber tenido una jugada decente con él, empiece a mirar la aplicación mal codificada desde una distancia que no mira el código o el diseño, pero qué está haciendo exactamente, ¿está obteniendo resultados de la base de datos? tener un sistema de usuario, etc.

Luego, comience a implementar la capa base de la aplicación, como la anterior, una vez que tenga la base de datos diseñada, puede comenzar a construir los modelos a buscar desde la base de datos en el punto de su aplicación. comience a crear los archivos de vista básicos tomando muestras de la aplicación codificada pobremente y recodifíquelas dentro de la nueva aplicación, teniendo en cuenta la estructura y la limpieza de la codificación.

Espero que esto te ayude a empezar a migrar porque desde luego no te aconsejo que sigas trabajando con una aplicación como esta.


@mitch

Evento pensaron que la segunda pieza de código es más limpio que su todavía la combinación de su visión con el resto de su aplicación en la que debe ser así:

<html> 
    <?php $this->load("segments/head"); ?> 
    <body> 
     <?php echo $this->wrap("span",$this->link("Some Linke",$this->var("homepage"))) ?> 
    </body> 
</html> 

un conjunto dedicado de métodos para la vista para evitar que interactúe con la lógica principal, esto estaría envuelto dentro de un objeto para evitar el alcance y solo el objeto debería poder acceder a la lógica principal.

0

No tengo datos estadísticos para respaldar esto, pero entiendo que es más eficiente "apagar" php para producir HTML en lugar de usar echo ""; La razón es que cuando ejecutas tu html a través de las etiquetas de eco, haces que PHP lo analice para mostrarlo, mientras que solo ponerlo en el documento permitirá que el navegador lo muestre SIN tener que analizar PHP.

Cuando hice el desarrollo ColdFusion, recuerdo haber escuchado el mismo estuche hecho para las etiquetas.

+2

Micro optimizaciones en el mejor ... – ircmaxell

0

Prefiero usar <?php y ?> porque es más fácil leer HTML, pero si la pérdida de rendimiento será muy pequeña. He escrito HTML con echo pero es muy malo leer y encontrar problemas en el HTML.