O que '<? =' Significa em PHP?

159
<?php

$a=1;

?>
<?=$a;?>

O que <?=significa exatamente?

user198729
fonte
Nota: Isso é usado extensivamente nos modos de exibição do ASP.NET MVC.
Omar
12
Observe que o ;é redundante; como as respostas sugerem que esse atalho se expande para echoum ponto-e-vírgula adicionado ao final, conforme os documentos php .
Not-just-yeti #

Respostas:

229

É uma abreviação para <?php echo $a; ?>.

É ativado por padrão desde a versão 5.4, independentemente das php.iniconfigurações.

BalusC
fonte
1
Está disponível no php 7?
Zachdyer
4
Observe que o ponto e vírgula final não é necessário. Mas se, por qualquer motivo, você precisar voltar às tags clássicas, uma simples pesquisa / substituição <?=em todo o projeto <?php echonão seria suficiente. De qualquer forma, a partir de hoje, espero que vocês não tenham servidores de produção executando o PHP <5.6, pois essas versões não são mais mantidas ( versões suportadas pelo PHP ).
TwistO
47

É uma abreviação para isso:

<?php echo $a; ?>

Eles são chamados de tags curtas; veja o exemplo 2 na documentação .

Will Vousden
fonte
12
Observe que todos os servidores não suportam tags curtas, conforme mencionado na resposta abaixo. Eles exigem php.ini para tershort_open_tag = On
Corey Ballou
17

Como não agregaria nenhum valor repetir isso echo, achei que você gostaria de ver exatamente o que significa no 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
        )
)

Você pode usar esse código para testá-lo:

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

Na lista de tokens do analisador , aqui está o link para T_OPEN_TAG_WITH_ECHO .

Gordon
fonte
O token falhou em me dizer mais detalhes.
precisa saber é o seguinte
9

<?= $a ?>é o mesmo que <? echo $a; ?>, apenas abreviação de conveniência.

Jeffrey Aylesworth
fonte
7

No PHP 5.4.0, <?= ?> estão sempre disponíveis mesmo sem o short_open_tag definido no php.ini.

Além disso, a partir do PHP 7.0, as tags ASP: <%, %> e a tag script <script language="php"> são removidas do PHP.

Gaius Gracchus
fonte
6
<?=$a; ?>

é um atalho para:

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

Espero que não seja preterido. Embora a escrita <? blah code ?>seja bastante desnecessária e confusa com XHTML,<?= não é, por razões óbvias. Infelizmente eu não uso, porque short_open_tag parece estar cada vez mais desativado.

Atualização: Eu uso <?=novamente agora, porque está ativado por padrão no PHP 5.4.0. Veja http://php.net/manual/en/language.basic-syntax.phptags.php

anti-herói
fonte