Pregunta

Me pregunto si existe una forma más corta de insertar texto en PHP que

<?php
$city = "London";
?>
This website is a funky guide to <?php print $city; ?>!!!

Por ejemplo, usando Ruby on Rails, podría configurar

city = 'London'

en algún lugar del código, y en mi archivo .erb podría hacer

This website is a funky guide to <%= city %>!!!

Leí en alguna parte que {$city} Podría usarse, pero lo intenté y no fue así.Entonces, ¿hay una forma más corta que <?php print $var; ?> ?

¿Fue útil?

Solución

Puede usar short_open_tag , que debe habilitarse en su configuración, pero eso no se considera una buena práctica, ya que solo funciona si están habilitados, y no siempre están (tal vez ni siquiera de forma predeterminada)

Usar etiquetas largas y echo / print puede ser más largo, sí ... Pero recomendaría usarlas, y no etiquetas cortas.


También tenga en cuenta que es posible que necesite escapar de sus datos, cuando proviene de una fuente no confiable y / o puede contener HTML que no desea que se inyecte en la página, para evitar inyecciones de HTML / JS (consulte htmlspecialchars ) :


EDITAR después de los comentarios, para agregar un par de cosas sobre development:

¿Por qué las etiquetas abiertas cortas se consideran (al menos para mí ^^) una mala práctica?

En primer lugar, después de algunas comprobaciones, no están habilitados de forma predeterminada:

Para PHP 5.3:

squale@shark:~/temp/php/php-5.3.0
$ grep 'short_open_tag' php.ini-development
; short_open_tag
short_open_tag = Off
squale@shark:~/temp/php/php-5.3.0
$ grep 'short_open_tag' php.ini-production
; short_open_tag
short_open_tag = Off

Desactivado por defecto en " production " o " recommended " configuración.

Para PHP 5.2.10 (versión más reciente de PHP 5.2) :

squale@shark:~/temp/php/php-5.2.10
$ grep 'short_open_tag' php.ini-dist
short_open_tag = On
squale@shark:~/temp/php/php-5.2.10
$ grep 'short_open_tag' php.ini-recommended
; - short_open_tag = Off           [Portability]
short_open_tag = Off

Desactivado por defecto en " <?xml " ajustes


Teniendo en cuenta que estas configuraciones predeterminadas a veces son (¿a menudo?) mantenidas por los servicios de alojamiento, es peligroso confiar en que .php esté activado.
(Tengo problemas con los que están deshabilitados ... Y cuando no eres administrador del servidor y no tienes los privilegios necesarios para modificar eso, no es divertido ^^)

Si desea algunos números, puede consultar Descubrimiento rápido: ¿<=> soporte activado o desactivado de forma predeterminada?
(No es una prueba científica, pero muestra que podría ser peligroso usarlos para una aplicación que lanzarías al público)


Como dijiste, esos, cuando se activan, entran en conflicto con la declaración XML, lo que significa que tienes que usar algo como esto:

<?php echo '<?xml version="1.0" encoding="UTF-8" ?>'; ?>

Teniendo en cuenta que existen etiquetas abiertas cortas y que podrían activarse en el servidor que usará, probablemente no debería usar <=> nunca; muy mal :-(


En realidad, leyendo el php.ini-recomendado de PHP 5.2.10:

; Allow the <? tag.  Otherwise, only <?php and <script> tags are recognized.
; NOTE: Using short tags should be avoided when developing applications or
; libraries that are meant for redistribution, or deployment on PHP
; servers which are not under your control, because short tags may not
; be supported on the target server. For portable, redistributable code,
; be sure not to use short tags.

El de PHP 6 es aún más interesante:

; This directive determines whether or not PHP will recognize code between
; <? and ?> tags as PHP source which should be processed as such. It's been
; recommended for several years that you not use the short tag "short cut" and
; instead to use the full <?php and ?> tag combination. With the wide spread use
; of XML and use of these tags by other languages, the server can become easily
; confused and end up parsing the wrong code in the wrong context. But because
; this short cut has been a feature for such a long time, it's currently still
; supported for backwards compatibility, but we recommend you don't use them.

(Puede ser lo mismo en PHP 5.3; no se verificó)


Ha habido rumores se pueden eliminar las etiquetas abiertas cortas de PHP 6; considerando la porción de php.ini que acabo de publicar, probablemente no lo hará ... pero, aún así ...


Para dar un argumento que apunta a la otra dirección (debo ser honesto, después de todo): usar etiquetas cortas y abiertas para archivos de plantilla (solo) es algo que a menudo es frecuente. hecho en los ejemplos de Zend Framework que usan archivos de plantilla:

  

En nuestros ejemplos y documentación, nosotros   hacer uso de las etiquetas cortas de PHP:      

Dicho esto, muchos desarrolladores prefieren   utilizar etiquetas completas para fines de   validación o portabilidad. por   instancia, short_open_tag está deshabilitado   en el archivo php.ini.recommended, y   si plantilla XML en scripts de vista,   etiquetas abiertas cortas causarán la   plantillas para fallar la validación.

( fuente )

Por el contrario, para <=> archivos:

  

Las etiquetas cortas nunca están permitidas. por   archivos que contienen solo código PHP, el   la etiqueta de cierre siempre debe omitirse

(fuente )


Espero que esa información sea útil y brinde algún tipo de respuesta a su comentario :-)

Otros consejos

Si cambia del modo PHP, entonces la única forma de imprimir la variable es volver a cambiarlo e imprimirlo como lo hizo anteriormente. Puede permanecer en modo PHP y usar la construcción {} que intentó:

<?php
$city = "London";
echo "This website is a funky guide to {$city}!!!";
?>
  

Leí en alguna parte que {$ city} podría usarse

Si opta por un motor de plantillas como Smarty , puede hacerlo. Eso podría ser útil si está desarrollando en un equipo y algunos de ellos no conocen PHP.

De lo contrario, lo más corto que obtendrá será lo siguiente, suponiendo que tenga habilitadas las etiquetas cortas:

<?=$city?>

Si no lo hace, o está creando una aplicación para redistribuir a otros, entonces use esto:

<?php echo $city ?>

Simplemente extienda su bloque PHP y haga esto:

<?php
$city = 'London';
echo 'This website is a funky guide to ',$city,' !!!';
?>

Alternativamente, puede usar " " en lugar de '' y reemplace ',$city,' con $city, pero se necesita más tiempo de CPU para analizar las variables.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top