¿Qué significa '<? =' En PHP?

159
<?php

$a=1;

?>
<?=$a;?>

¿Qué <?=significa exactamente?

usuario198729
fuente
Nota al margen: esto se usa ampliamente en las vistas ASP.NET MVC.
Omar
12
Tenga en cuenta que ;es redundante; como las respuestas sugieren que esta etiqueta corta se expande a una echocon un punto y coma agregado al final, según los documentos php .
no solo yeti

Respuestas:

229

Es una abreviatura para <?php echo $a; ?>.

Está habilitado por defecto desde 5.4 independientemente de la php.iniconfiguración.

BalusC
fuente
1
¿Está disponible en php 7?
zachdyer
44
Tenga en cuenta que no se requiere el punto y coma final. Pero si, por cualquier razón, necesita volver a las etiquetas clásicas, una simple búsqueda / reemplazo <?=de todo el proyecto no <?php echosería suficiente. De todos modos, a partir de hoy espero que no tengan ningún servidor de producción que ejecute PHP <5.6 ya que estas versiones ya no se mantienen ( versiones compatibles con PHP ).
TwystO
47

Es una abreviatura para esto:

<?php echo $a; ?>

Se llaman etiquetas cortas; ver ejemplo # 2 en la documentación .

Will Vousden
fuente
12
Tenga en cuenta que todos los servidores no admiten etiquetas cortas como se menciona en una respuesta a continuación. Requieren php.ini para tenershort_open_tag = On
Corey Ballou
17

Como no agregaría ningún valor repetir lo que significa echo, pensé que le gustaría ver qué significa exactamente en PHP:

Array
(
    [0] => Array
        (
            [0] => 368 // T_OPEN_TAG_WITH_ECHO
            [1] => <?=
            [2] => 1
        )
    [1] => Array
        (
            [0] => 309 // T_VARIABLE
            [1] => $a
            [2] => 1
        )
    [2] => ; // UNKNOWN (because it is optional (ignored))
    [3] => Array
        (
            [0] => 369 // T_CLOSE_TAG
            [1] => ?>
            [2] => 1
        )
)

Puede usar este código para probarlo usted mismo:

$tokens = token_get_all('<?=$a;?>');
print_r($tokens);
foreach($tokens as $token){
    echo token_name((int) $token[0]), PHP_EOL;
}

De la Lista de tokens de analizador , esto es a lo que se vincula T_OPEN_TAG_WITH_ECHO .

Gordon
fuente
El token no pudo decirme más detalles.
user198729
9

<?= $a ?>es lo mismo que <? echo $a; ?>, solo taquigrafía para mayor comodidad.

Jeffrey Aylesworth
fuente
7

A partir de PHP 5.4.0, <?= ?> siempre están disponibles, incluso sin el short_open_tag establecido en php.ini.

Además, a partir de PHP 7.0, las etiquetas ASP: <%, %> y la etiqueta de script <script language="php"> se eliminan de PHP.

Cayo Graco
fuente
6
<?=$a; ?>

es un atajo para:

<?php echo $a; ?>
Inspirar
fuente
3

Espero que no quede en desuso. Si bien la escritura <? blah code ?>es bastante innecesaria y confusa con XHTML, <?=no lo es, por razones obvias. Lamentablemente no lo uso, porque short_open_tag parece estar deshabilitado cada vez más.

Actualización: lo uso de <?=nuevo ahora, porque está habilitado de forma predeterminada con PHP 5.4.0. Ver http://php.net/manual/en/language.basic-syntax.phptags.php

anti héroe
fuente