Mira esto:
<?php
echo "Hello World";
?>
<br />
<?php
echo "Welcome";
?>
Y ahora mira esto:
<?php
echo "Hello World";
echo "<br />";
echo "Welcome";
?>
¿Cuál de los ejemplos anteriores se considera mejor (al menos desde el punto de vista del rendimiento)?
Sé que los ejemplos son triviales, pero quiero seguir los hábitos de buenas prácticas desde el principio para que cuando tenga más y más líneas no afecten negativamente el rendimiento o lo que sea.
web-development
php
html
erupción
fuente
fuente
Respuestas:
Como señala el comentario, debe hacerse mediante plantillas. Pero si solo tu opción dos es posible. El caso 1 será mejor. Este es el mismo concepto que el diseño de inflado de Android por xml, o haciendo programáticamente la UI. Tu
<br/>
es un contenido estático de tu html y todo lo que hará tu servidor es mostrarlo. Pero si usa php, para ejecutarlo, esto usará los recursos de su servidor y será computacional.Así es como debe hacerse: index.php:
header.html y footer.html son plantillas.
fuente
Para responder directamente a su pregunta: nunca haga eco de texto estático o HTML. Deja eso fuera de tu PHP.
Escapar a PHP es un desperdicio si todo lo que vas a hacer es pasar texto estático o html estático. Todo el código dentro de
<?php ?>
se envía a PHP para ser interpretado. Esto significa que su sitio web es más lento y está desperdiciando electricidad si pasa grandes cantidades de texto estático a PHP sin ningún motivo. (A veces hay una razón).La mejor práctica es hacer que su lógica y gruñido trabajen en archivos sin HTML, solo PHP.
La forma en que me gusta hacer esto es con un marco MVC. Tengo PHP puro en los modelos y controladores, y una mezcla de HTML y PHP en las vistas. No necesita un marco MVC; simplemente podría pegar su mezcla de HTML en archivos de plantilla, que luego incluirá en sus archivos PHP puros.
Una vez que haya creado sus variables (que no incluyen HTML en ellas) en archivos PHP puros, puede pasarlas al archivo con su HTML. Allí, y solo allí, está bien mezclar HTML y PHP. Pero, y esto es importante, pero cuando trabaje con archivos que tienen HTML, mantenga el PHP al mínimo.
Afortunadamente, PHP viene con herramientas amigables para hacer que PHP sea más fácil de leer cuando se mezcla con html.
Sintaxis Alternativa
La mejor práctica es usar la sintaxis PHP normal al escribir PHP puro, pero la sintaxis alternativa, al mezclar PHP y HTML.
En archivos PHP normales sin HTML:
Esto es hermoso para PHP puro, pero no es ideal cuando se escapa de HTML. En particular, las llaves de cierre a menudo son difíciles de entender cuando aparecen en grandes pilas de HTML.
Parece, en base a su pregunta que habría escrito, en un archivo que combina HTML y PHP, esto:
Por los motivos descritos anteriormente, queremos que el HTML no se envíe a PHP. Hacemos esto así:
Sacamos nuestro HTML de nuestras etiquetas PHP, lo cual es una mejora. Pero podríamos ir más allá.
¿Te das cuenta de lo poco informativo que es el corchete de cierre? No sabemos si está cerrando un ciclo o una declaración if. Esto parece trivial en el ejemplo anterior, pero a menudo hay docenas de líneas de HTML dentro de if / endif dentro de un bucle / endloop.
La mejor práctica es que en un archivo que mezcla PHP y HTML, utilice la sintaxis alternativa, que omite abrir y cerrar llaves (
{ }
):Además de la semántica de la nueva sintaxis (
:
y enendif;
lugar de{
y}
), debe notar dos cosas:<?php ?>
etiquetas, por lo que no se interpretan. Por las razones descritas anteriormente, esto es bueno.<?php } ?>
) cerrando cosas que son difíciles de encontrar donde se abrieron (porque están mezcladas con un montón de HTML desordenado). De nuevo, imagine un gran archivo HTML con bucles y sentencias if. Especificar lo que está cerrando puede aclarar mucho.La misma sintaxis amigable con la plantilla se puede usar también para bucles:
Etiquetas cortas
Otra gran herramienta proporcionada por PHP que, una vez más, solo desea usar al mezclar PHP y HTML, son las etiquetas cortas. Es posible que deba activar etiquetas cortas en el archivo php.ini. Una vez activadas, las etiquetas cortas hacen que todo sea aún más legible.
Sin etiquetas cortas, tiene que escribir,
<?php echo $something; ?>
pero con etiquetas cortas puede escribir<?=$something?>
y tendrá exactamente el mismo resultado.Al combinar etiquetas cortas y la sintaxis alternativa de PHP, realmente puede escribir algunos archivos HTML elegantes, que incluyen elementos PHP. Tomando nuestro último ejemplo de bucle (solo la parte dentro del bucle), las etiquetas cortas nos permiten reducir:
a
lo cual es mucho más legible.
¿Podríamos ir más lejos? Sí. Usando varios sistemas de plantillas puede hacer cosas como:
Lo cual es asombrosamente legible. Sin embargo, los sistemas de plantillas están muy fuera del alcance de la pregunta original (que dejé hace un tiempo de todos modos).
fuente
short_open_tag
directiva siempre esté activada. PHP 5.4 pone a<?=$thing?>
disposición todo el tiempo, incluso cuandoshort_open_tag
está deshabilitado. Además, el valorshort_open_tag
predeterminado es apagado para evitar conflictos con XML.<?php $foo='ABC'; echo '<div>', $foo, '</div>'
y<?php $foo='ABC'; ?><div><?=$foo?></div>
dan como resultado exactamente los mismos códigos de operación, es decir, son idénticos.<li>{$thing}</li>
como lo ha mostrado, con la ventaja sobre las comillas dobles de que no tiene que escapar de las comillas dobles dentro de él. También puede asignar heredoc o pasarlo a funciones, por lo que es mucho más limpio que php / html si lo está usando en bloques, por ejemplo.array_reduce($items, function($s, $item) { $name = htmlspecialchars($item['name']); return $s . <<< EOT <li>{$name}: {$item['price']}</li> EOT; })
Estás aprendiendo, olvídate del rendimiento en las páginas PHP. En su lugar, elija la forma más fácil de leer .
Mirando sus dos ejemplos, el segundo es definitivamente el más fácil de leer, aunque creo que es por el espacio que ha utilizado. Dices que estás buscando desarrollar buenos hábitos desde el principio, creo que puedes dedicar mejor tu tiempo haciendo que tu código se lea bien. Esto podría significar reescribir una sección varias veces hasta que esté satisfecho con ella.
Si está realmente interesado en el detrás de escena, explicaré lo que sucede con el contenido estático en una página PHP. Una de las primeras cosas es "analizar" toda la página en código ejecutable (como se ve entre las
<?php ?>
etiquetas). Una parte de esto es convertir cualquier texto estático en unecho
.Así que esto:
se transforma en algo como:
Hay un costo muy pequeño asociado con el análisis, pero no hay diferencia en la ejecución del código resultante. Si está utilizando un acelerador PHP, el análisis solo se realiza una vez y luego se almacena en caché, por lo que no verá ninguna diferencia de rendimiento después de la primera carga de la página.
Recuerde: ¡fácil de leer!
fuente
echo
, si lo quiere decir literalmente (lo que implica su idioma). El resultado es el mismo, pero los métodos son muy diferentes. Lo que llamas "texto estático" es, de hecho, escapar de PHP a HTML. Cuando esto sucede, el servidor comienza a enviar texto sin formato. No lo analiza a través de PHP, como lo haría conecho
. Las implicaciones de rendimiento son probablemente pequeñas en cualquier circunstancia no artificial, pero la diferencia mecanicista es importante.Una de las mejores características de PHP fue que está diseñado para integrarse en HTML. Por lo general, se usa para crear plantillas. Hace que su código sea más fácil de leer y mantener, ya que separa el código PHP del HTML.
Pero si solo está imprimiendo una página estática como "Hello World!" es una mala idea.
fuente
Para responder a su pregunta simplemente: dado su código de ejemplo, habrá poca o ninguna diferencia en el rendimiento. PHP se procesa a nivel de servidor / host, mientras que HTML es procesado por el agente de usuario / persona que mira su página web en su navegador. ¿Quién será más rápido? Difícil de determinar.
Estoy de acuerdo con otros diciendo que cada uno tiene sus fortalezas y debilidades y que pueden funcionar realmente bien juntos. PHP es programable y puede hacer cálculos y trabajar con variables. Por esa razón, todas mis páginas terminan siendo PHP y recurren a fragmentos de código HTML, plantillas como se mencionó e inserta variables para que mi HTML se vuelva dinámico.
En su ejemplo, podría encadenar el HTML en una sola declaración PHP de la siguiente manera:
Espero que eso ayude a aclarar un poco.
fuente
Existen limitaciones en el uso de HTML dentro de PHP.
La mayoría de las veces tendrías tu HTML afuera. Crearía una página tal como lo haría si no estuviera usando PHP, luego agregaría el PHP en las áreas del documento donde lo necesita. Puede tener varios fragmentos de PHP dentro de un documento.
fuente
En general, se considera una mala forma de generar código HTML desde PHP. Hay varias razones para esto, pero la principal es que es más fácil, especialmente a largo plazo, mantener el código si el código HTML y PHP está separado.
Es como HTML, CSS y Javascript; es mucho más fácil y práctico mantenerlo separado.
Técnicamente, sin embargo, no hay absolutamente ninguna diferencia en la forma en que imprime cosas. Para PHP son solo bytes seguidos.
fuente
<?php echo 'hello'; ?>
se pasa a PHP.hello
no se pasa a PHP. Todo lo que se pasa a PHP se convierte en bytecode y luego se interpreta. Esto lleva tiempo, potencia de procesamiento y electricidad.