Was bedeutet '<? =' In PHP?

159
<?php

$a=1;

?>
<?=$a;?>

Was <?=bedeutet genau?

user198729
quelle
Randnotiz: Dies wird häufig in ASP.NET MVC-Ansichten verwendet.
Omar
12
Beachten Sie, dass das ;redundant ist; Wie aus den Antworten hervorgeht, wird dieses Short-Tag echogemäß den PHP-Dokumenten zu einem mit einem am Ende hinzugefügten Semikolon erweitert .
nicht nur Yeti

Antworten:

229

Es ist eine Abkürzung für <?php echo $a; ?>.

Es ist standardmäßig aktiviert seit 5.4 unabhängig von den php.iniEinstellungen.

BalusC
quelle
1
Ist es in PHP 7 verfügbar?
Zachdyer
4
Beachten Sie, dass das letzte Semikolon nicht erforderlich ist. Aber wenn aus irgendeinem Grunde, müssen Sie klassische Tags zurück zu gehen, eine einfache Projekt weite Suchen / Ersetzen <?=für <?php echowould'nt genug sein. Ab heute hoffe ich, dass ihr keine Produktionsserver mit PHP <5.6 habt, da diese Versionen nicht mehr gepflegt werden ( PHP Supported Versions ).
TwystO
47

Es ist eine Abkürzung dafür:

<?php echo $a; ?>

Sie werden kurze Tags genannt; siehe Beispiel 2 in der Dokumentation .

Will Vousden
quelle
12
Bitte beachten Sie, dass nicht alle Server kurze Tags unterstützen, wie in der folgenden Antwort angegeben. Sie benötigen php.ini zu habenshort_open_tag = On
Corey Ballou
17

Da es keinen Mehrwert bringt, zu wiederholen, was es bedeutet echo, dachte ich, Sie möchten sehen, was genau in PHP bedeutet:

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
        )
)

Sie können diesen Code verwenden, um ihn selbst zu testen:

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

Aus der Liste der Parser Tokens , hier ist das, was T_OPEN_TAG_WITH_ECHO Links zu .

Gordon
quelle
Das Token konnte mir keine weiteren Details mitteilen.
user198729
9

<?= $a ?>ist das gleiche wie <? echo $a; ?>, nur eine Abkürzung für die Bequemlichkeit.

Jeffrey Aylesworth
quelle
7

Ab PHP 5.4.0, <?= ?> sind sie auch ohne den in php.ini festgelegten short_open_tag immer verfügbar.

Ab PHP 7.0 werden außerdem die ASP-Tags: <%, %> und das Skript-Tag <script language="php">aus PHP entfernt.

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

ist eine Abkürzung für:

<?php echo $a; ?>
Inspirieren
quelle
3

Ich hoffe es wird nicht veraltet. Während das Schreiben <? blah code ?>mit XHTML ziemlich unnötig und verwirrend ist,<?= ist dies aus offensichtlichen Gründen nicht der . Leider benutze ich es nicht, weil short_open_tag immer mehr deaktiviert zu sein scheint.

Update: Ich verwende <?=es jetzt wieder, da es standardmäßig mit PHP 5.4.0 aktiviert ist. Siehe http://php.net/manual/en/language.basic-syntax.phptags.php

Antiheld
quelle