2010-01-27 10 views
45

Yo trabajo mucho en HTML y PHP mixta y que más tiempo sólo quiero HTML sólida con algunas variables de PHP en ella por lo que mi mirada código como este:

<tr><td> <input type="hidden" name="type" value="<?php echo $var; ?>" ></td></tr> 

que es bastante fea. ¿No hay algo más corto, más parecido al siguiente?

<tr><td> <input type="hidden" name="type" value="$$var" ></td></tr> 

Esto es posible, pero se queda atascado con el "" (usted tiene que reemplazar a todos con '') y el diseño se ha ido

echo "<tr><td> <input type="hidden" name="type" value="$var" ></td></tr>" 

¿Hay algo mejor?

+0

Tenga en cuenta que PHP es más rápido con comillas simples que el doble, una d si es necesario, use echo ''; –

+1

@LucianMinea Tienen la misma velocidad. Las comillas simples y las comillas dobles son solo * comillas *, ninguna de las cuales es "más rápida". Esto a menudo es información errónea repetida y está completamente equivocado. – meagar

+0

Es más rápido con single, y es fácil de ver en bloques de código grandes. La razón es que PHP hace automáticamente una "limpieza" de comillas dobles en el tiempo de ejecución, pero no en comillas simples. El uso de comillas dobles también hace que el código de la pregunta quede atascado, porque las comillas simplemente se cierran en una posición incorrecta. Además, solo estaba tratando de darle una solución al hombre, con un poco de explicación. Lo hago desde el 91, así que sé que conozco mis motivos. –

Respuesta

55

Hay la versión de la etiqueta debajo de su código, que es ahora completamente aceptable el uso de pesar de las recomendaciones anticuadas De lo contrario:

<tr><td> <input type="hidden" name="type" value="<?= $var ?>" ></td></tr> 

la que (antes de PHP 5.4) requiere que las etiquetas cortas estar habilitadas en su configuración de PHP . Funciona exactamente como el código que escribió; estas líneas son literalmente idénticas en su implementación interna:

<?= $var1, $var2 ?> 
<?php echo $var1, $var2 ?> 

Eso es todo por soluciones incorporadas. Hay muchas bibliotecas de plantillas de terceros que facilitan la inserción de datos en su salida, smarty es un buen lugar para comenzar.

+4

@code_burgar Las etiquetas cortas no se eliminarán de PHP6, ni están actualmente en desuso. – meagar

+1

Hmm, podría estar equivocado, pero estaba bastante seguro de que se eliminarán. Incluso si se quedan, usarlos es, en el mejor de los casos, una práctica dudosa. = whoops. Sin mencionar que están deshabilitados por defecto en algunos servidores. –

+2

@code_burgar No escriba XML dentro de sus scripts PHP, XML codifique sus datos y escriba el resultado resultante. Nunca encuentro un servidor con short_open_tags deshabilitado. – meagar

18

Utilice la sintaxis HEREDOC. Puede mezclar comillas simples y dobles, variables e incluso llamadas de función con marcado html inalterado/sin corregir.

echo <<<MYTAG 
    <tr><td> <input type="hidden" name="type" value="$var1" ></td></tr> 
    <tr><td> <input type="hidden" name="type" value="$var2" ></td></tr> 
    <tr><td> <input type="hidden" name="type" value="$var3" ></td></tr> 
    <tr><td> <input type="hidden" name="type" value="$var4" ></td></tr> 
MYTAG; 
+2

Mi único problema con la sintaxis de HEREDOC es que no funciona el resaltado de sintaxis para las partes HTML de mis páginas. – meagar

+0

@meagar lo hace en algunos editores, a menos que tenga un conjunto de reglas para anularlo. –

+0

solo reza nunca necesita indexar naves klingon :) sobre el editor, use VIM – gcb

1

Existen muchos sistemas de plantillas que ofrecen una sintaxis más compacta para sus vistas. Smarty es venerable y popular. This article enumera 10 más.

1

Aconsejaría no utilizar las etiquetas cortas, vea Are PHP short tags acceptable to use? para obtener más información sobre por qué.

Personalmente no me importa mezclar HTML y PHP como tal

<a href="<?php echo $link;?>">link description</a> 

Como siempre y cuando tenga un código de editor con resaltado de sintaxis bueno, creo que esto es bastante legible. Si comienza a hacer eco de HTML con PHP, entonces perderá todas las ventajas de la sintaxis al resaltar su HTML. Otra desventaja de hacer eco de HTML es la cosa con las comillas, el siguiente es mucho menos legible en mi humilde opinión.

echo '<a href="'.$link.'">link description</a>'; 

La mayor ventaja para mí con eco simple y bucle simple en PHP y haciendo el resto en HTML es que la sangría es consistente, lo que al final mejora la legibilidad/escaneabilidad.

+3

Nadie debería * usar * esa pregunta como referencia, es un humeante montón de desinformación y opinión subjetiva. – meagar

+0

@meagar: ¡Exactamente! Sin mencionar, un comentario que resalta [este enlace] (http://php.net/manual/en/function.echo.php) especifica que la etiqueta de eco corta se separa de la sintaxis corta abierta de php5.4 en adelante. Esto es lo que dice (el manual al final del enlace anterior). "** echo también tiene una sintaxis de acceso directo, donde puede seguir inmediatamente la etiqueta de apertura con un signo igual. Antes de PHP 5.4.0, esta breve sintaxis solo funciona con la configuración de configuración short_open_tag habilitada. **" –

4

Realmente creo que debería adoptar el motor de plantillas Smarty como un php lib estándar para sus proyectos.

http://www.smarty.net/

Name: {$name|capitalize}<br> 
+5

¿Cuáles son? tus argumentos a favor? – Rob

+2

argumentos a favor: - separación del código php de html (mejor para el mantenimiento) - se mostrará una plantilla smarty en un navegador como está. (Los diseñadores de front-end sin experiencia en programación pueden tener mejor sentido) - almacenamiento en caché. (Puede guardar múltiples copias en caché de su página de acuerdo con las entradas, lo que puede ser mucho más rápido que generar toda la página de nuevo) desventajas - smarty es un poco demasiado potente y los programadores pueden poner demasiada lógica en una plantilla. .. pero al menos es lógica de pantalla – Bingy

+0

Exactamente lo que está diciendo. No escribe una clase de conexión de base de datos para conectarse a su base de datos, ¿verdad? ¿Por qué escribes un motor de plantillas para hacer plantillas? – gcb

1

En una sección php antes de la sección de HTML, el uso sprinf() para crear una cadena constante de las variables:

$mystuff = sprinf("My name is %s and my mother's name is %s","Suzy","Caroline"); 

Luego, en la sección HTML que puede hacer lo le gusta, como:

<p>$mystuff</p>