<rmcreative>

RSS

Все заметки с тегом «short_open_tag»

Можно уточнить:

    (2)
    (1)
  1. Короткие теги в PHP

    10 июня 2020

    Почти десять лет назад я писал про короткие теги и радовался включению короткого echo по умолчанию.

    Сегодня меня спросили, что я думаю по поводу использования коротких тегов.

    Их осталось на данный момент в PHP 7.4 два вида:

    • <? - короткая форма <?php. Включается через short_open_tag в php.ini.
    • <?= - короткая форма <?php echo. Доступна всегда.

    Если с <?= всё ясно, тег доступен всегда и удобен при использовании в шаблонах, то с <? не всё так просто.

    В PHP 7.4 его хотели убрать и почти убрали после положительного голосования за RFC. Но в итоге сначала предложили сделать это по-другому, а потом и вовсе не делать.

    В результате в PHP 7.4 теги работают как и ранее. В PHP 8 тоже (но не факт, что так будет в релизе).

    Стоит ли использовать <? - вопрос неоднозначный. Если у вас проект, который разворачивается только на ваши сервера, вы контролируете php.ini и никогда не забываете short_open_tag = On, то технически ничего ужасного в использовании коротких тегов нет. Если же вы делаете продукт, который можно поставить на свой сервер, такой как CMS или фреймворк, то использовать <? - плохая идея. Часть пользователей обязательно попробует развернуть ваш продукт в окружении, где у них нет возможности поправить php.ini.

    8 комментариев
  2. PHP, шаблоны и короткий синтаксис

    11 августа 2010

    Одним из самых частых аргументов, приводимых в пользу шаблонизаторов по сравнению с голым PHP, является более красивый синтаксис:

    {$code}

    вместо

    <?php echo $code?>

    На самом деле этот аргумент, хотя и самый часто используемый, является полностью необоснованным.

    Если включить в php.ini short_open_tag, можно вместо действительно громоздкого кода, приведённого выше, писать:

    <?=$code?>

    При использовании альтернативного синтаксиса управляющих конструкций, код будет гораздо понятней, чем шаблон того же Smarty:

    <ol>
    <?foreach($users as $user):?>
      <li>
        <h2><?=$user->username?></h2>
        <p><?=$user->notes?></p>
      </li>
    <?endforeach?>
    </ol>
    34 комментария