Que signifie «<? =» En PHP?

159
<?php

$a=1;

?>
<?=$a;?>

Que veut <?=dire exactement?

user198729
la source
Remarque: Ceci est largement utilisé dans les vues ASP.NET MVC.
Omar
12
Notez que le ;est redondant; comme les réponses le suggèrent, cette balise courte se développe en un echoavec un point-virgule ajouté à la fin, selon les documents php .
not-just-yeti

Réponses:

229

C'est un raccourci pour <?php echo $a; ?>.

Il est activé par défaut depuis la version 5.4 quels que soient les php.iniparamètres.

BalusC
la source
1
Est-il disponible en php 7?
zachdyer
4
Notez que le point-virgule final n'est pas obligatoire. Mais si, pour une raison quelconque, vous devez revenir aux balises classiques, une simple recherche / remplacement <?=à l' <?php echoéchelle du projet ne suffirait pas. Quoi qu'il en soit, à partir d'aujourd'hui, j'espère que vous n'avez pas de serveurs de production exécutant PHP <5.6 car ces versions ne sont plus maintenues ( versions supportées par PHP ).
TwystO
47

C'est un raccourci pour ceci:

<?php echo $a; ?>

On les appelle des balises courtes; voir l'exemple n ° 2 dans la documentation .

Will Vousden
la source
12
Veuillez noter que tous les serveurs ne prennent pas en charge les balises courtes comme mentionné dans une réponse ci-dessous. Ils nécessitent php.ini d'avoirshort_open_tag = On
Corey Ballou
17

Comme cela n'ajouterait aucune valeur à répéter ce que cela signifie echo, j'ai pensé que vous aimeriez voir ce que signifie exactement 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
        )
)

Vous pouvez utiliser ce code pour le tester vous-même:

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

À partir de la liste des jetons d'analyseur , voici les liens vers T_OPEN_TAG_WITH_ECHO .

Gordon
la source
Le jeton ne m'a pas donné plus de détails.
user198729
9

<?= $a ?>est le même que <? echo $a; ?>, juste un raccourci pour plus de commodité.

Jeffrey Aylesworth
la source
7

Depuis PHP 5.4.0, <?= ?> sont toujours disponibles même sans le short_open_tag défini dans php.ini.

De plus, à partir de PHP 7.0, les balises ASP: <%, %> et la balise script <script language="php"> sont supprimées de PHP.

Gaius Gracchus
la source
6
<?=$a; ?>

est un raccourci pour:

<?php echo $a; ?>
Inspirer
la source
3

J'espère qu'il n'est pas obsolète. Bien que l'écriture <? blah code ?>soit assez inutile et confuse avec XHTML, ce <?=n'est pas le cas, pour des raisons évidentes. Malheureusement, je ne l'utilise pas, car short_open_tag semble être de plus en plus désactivé.

Mise à jour: J'utilise à <?=nouveau maintenant, car il est activé par défaut avec PHP 5.4.0. Voir http://php.net/manual/en/language.basic-syntax.phptags.php

Anti Hero
la source