Co oznacza „<? =” W PHP?

159
<?php

$a=1;

?>
<?=$a;?>

Co to <?=dokładnie znaczy?

user198729
źródło
Uwaga boczna: jest to szeroko używane w widokach ASP.NET MVC.
Omar,
12
Zauważ, że ;jest zbędny; jak sugerują odpowiedzi, ten krótki tag rozszerza się do znaku echoze średnikiem dodanym na końcu, zgodnie z dokumentami php .
not-just-yeti

Odpowiedzi:

229

To skrót od <?php echo $a; ?>.

Jest domyślnie włączony od wersji 5.4, niezależnie od php.iniustawień.

BalusC
źródło
1
Czy jest dostępny w php 7?
zachdyer
4
Pamiętaj, że ostatni średnik nie jest wymagany. Ale jeśli z jakiegoś powodu musisz wrócić do klasycznych tagów, proste wyszukiwanie / zamiana <?=dla całego projektu <?php echonie wystarczy. W każdym razie mam nadzieję, że na dzień dzisiejszy nie macie żadnych serwerów produkcyjnych z PHP <5.6, ponieważ te wersje nie są już obsługiwane (wersje obsługiwane przez PHP ).
TwystO
47

To jest skrót na to:

<?php echo $a; ?>

Nazywa się je krótkimi tagami; patrz przykład nr 2 w dokumentacji .

Will Vousden
źródło
12
Należy pamiętać, że wszystkie serwery nie obsługują krótkich tagów, jak wspomniano w odpowiedzi poniżej. Wymagają posiadania php.inishort_open_tag = On
Corey Ballou
17

Ponieważ nie dodałoby to żadnej wartości do powtórzenia, że ​​to znaczy echo, pomyślałem, że chciałbyś zobaczyć, co dokładnie oznacza w 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
        )
)

Możesz użyć tego kodu do samodzielnego przetestowania:

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

Z listy tokenów parsera , oto linki do T_OPEN_TAG_WITH_ECHO .

Gordon
źródło
Token nie podał mi więcej szczegółów.
user198729
9

<?= $a ?>to to samo co <? echo $a; ?>, tylko skrót dla wygody.

Jeffrey Aylesworth
źródło
7

Od PHP 5.4.0 <?= ?> są zawsze dostępne nawet bez short_open_tag ustawionego w php.ini.

Ponadto od wersji PHP 7.0 tagi ASP: <%, %> i tag skryptu <script language="php"> są usuwane z PHP.

Gaius Gracchus
źródło
6
<?=$a; ?>

to skrót do:

<?php echo $a; ?>
Inspirować
źródło
3

Mam nadzieję, że nie zostanie wycofany. Chociaż pisanie <? blah code ?>jest dość niepotrzebne i mylące z XHTML <?=, z oczywistych powodów tak nie jest. Niestety nie używam go, ponieważ short_open_tag wydaje się być coraz bardziej wyłączony.

Aktualizacja: Teraz używam <?=ponownie, ponieważ jest domyślnie włączona w PHP 5.4.0. Zobacz http://php.net/manual/en/language.basic-syntax.phptags.php

anty-bohater
źródło