2012-01-19 18 views
5

Si estoy dentro de una tonelada de código PHP, en lugar de salir de PHP suelo escribir código que contiene variables de este modo:¿Qué forma de escribir este código es más eficiente?

echo "This is how I use a ".$variable." inside a string"; 

pero es más eficiente para conseguir realmente fuera de PHP, así:

?> 

Should I instead use the <? echo $variable; ?> like this 

<? // then back into PHP 

A lo largo de una página habrá muchas instancias de código como este cuando llene páginas con contenido dinámico, ¿o es una generalización excesiva?

+7

Nunca notará una diferencia en el rendimiento entre los dos, es tan pequeño que es prácticamente inconmensurable .... si necesita optimizar, perfilar sus secuencias de comandos, y ver las consultas SQL y el acceso a archivos .... son gastos generales mucho más grandes –

+0

el rendimiento de las variables de 'eco' en uno u otro sentido es apenas el mismo. –

+1

Si necesito escribir solo una línea de código, uso echo, pero cuando se trata de varias líneas html, salgo de php. Pero sería interesante saber si hay una diferencia de rendimiento entre los dos. – romainberger

Respuesta

5

Solo sugiero salir de las etiquetas php al hacer eco de HTML, no solo una cadena.

Esto está bien para sólo una cadena:

// You don't need to concat, double quotes interpolate variables 
echo "This is how I use a $variable inside a string"; 

Pero con HTML, personalmente, me gusta hacer esto:

<?php //... ?> 
<div> 
    <span>This is how I use a <?=$variable?> inside HTML</span> 
</div> 
<?php //... ?> 
0

echo 'This is how I use a'.$variable.' inside a string'; es probable que el aquí más eficiente ..

En el primer caso, que está utilizando ", lo que hace que toda la cadena que se evalúa para las variables en línea.

En su segundo caso, me imagino que el cambio de contexto puede ser un poco más caro para el intérprete que en mi muestra.

Habiendo dicho eso, estás viendo una diferencia insignificante de cualquier manera.

+0

No necesariamente el más eficiente, ya que está concatenándose ... solo pasar una serie de argumentos no concatenados para eco separados por comas será cada vez más eficiente –

+0

@MarkBaker: Sí, es más eficiente con una serie de argumentos , pero es más eficiente para concatenar con una sola variable. Donde el intercambio está exactamente, no estoy seguro. –

0

Si sólo tiene que utilizar <?php ..... ?> entre su no-PHP (HTML) donde sea que necesites Incluso puede tener un do-while, para bucles dentro de ellos.

0

Otra forma es utilizar printf() de la siguiente manera:

// your variable 
$my_variable = "Stack Overflow"; 

printf("Real programmers graduate on %s", $my_variable); 

// this prints 'Real programmers graduate on Stack Overflow, 

Plus tiene la ventaja añadida de no necesitar para concatenar con frecuencia. Sin embargo, podría valer la pena averiguar cómo funciona en comparación con la instrucción de eco

1

El uso del eco parece ser un poco más rápido. Hice este sencillo script de referencia:

<?php 
$variable = "hello world"; 
$num = 10000; 
$start1 = microtime(true); 
for ($i = 0; $i<$num;$i++) {  
    echo "test " . $variable . " test\n";  
} 
$time1 = microtime(true) - $start1; 
$start2 = microtime(true); 
for ($i = 0; $i<$num;$i++) { 
    ?>test <?php echo $variable;?> test 
<? 
} 
$time2 = microtime(true) - $start2; 
echo "\n$time1\n$time2\n"; 

El bucle echo fue consistentemente alrededor del 25% más rápido.

En realidad, esta diferencia es tan pequeña que no tendría ningún impacto en el rendimiento general a menos que estuvieras literalmente haciendo millones de dichos estados de salida. Aún así, recomendaría usar echo solo porque es más sencillo y fácil de leer.

0

En la mayoría de los casos, se recomienda no utilizar las etiquetas cortas para php. En cualquier caso, si está entre comillas dobles, ni siquiera tiene que usar los puntos concat para generar una variable.Sólo puede hacer esto:

echo "This is how I use a $variable inside a string"; 

o esto:

echo "This is how I use a {$variable} inside a string"; 

El segundo ejemplo permite expresiones (elementos de la matriz y las propiedades de objetos) para ser delimitadas por las llaves. También puede usarlos en el primer ejemplo, pero la codicia del análisis de variables a veces causa problemas. Usar las llaves te detiene eso.

Cuestiones relacionadas