Альтернативная форма записи управляющих конструкций PHP

Короткая форма записи открывающих тегов PHP

Для простоты сначала рассмотрим примеры с короткой формой записи открывающих тегов PHP.

Вставка редактируемого данного

<td><?= $dat[1] ?></td>

foreach

<? foreach ($tab as $i => $dat): ?>
    <?= $dat['edit']?>
    Фамилия <?= $dat[1] ?> упоминается <?= $tdat[$i] ?> раз.
<? endforeach ?>

Присваивание значения

<?
    $aa = 10;
    $bb = $aa + 5;
?>
<?= $bb ?>
// Данный пример выведет: 15

if...else

<? if ($dat['edit']): ?> вы можете редактировать этот блок
<? else: ?> вы не можете редактировать этот блок
<? endif ?>

Пример (полосатая таблица)
Это - пример, в котором используются все три конструкции. В нем цвет строк таблицы чередуется между белым (по умолчанию) и серым (#dddddd):

<? $toggle=1; ?>
<table>
<? foreach ($tab as $dat): ?>
# Если переменная $toggle положительна, то - серый фон
<tr<? if ($toggle>0): ?> bgcolor="#dddddd"<? endif ?>>
    <td><?= $dat['edit'] ?></td>
    <td><?= $dat[1] ?>     </td>
    <td><?= $dat[2] ?>     </td>
</tr>
<? $toggle=-$toggle ?>
<? endforeach ?>
</table>

Полная форма записи открывающих тегов PHP

В приведенных примерах применялась короткая форма записи открывающих тегов PHP: <? ... ?>.

Для того, чтобы работали короткие теги, они должны быть включены в настройках PHP (в файле php.ini должна присутствовать строка short_open_tag = On). В PHP4 короткие теги разрешены по умолчанию, в PHP5 - нет.

Если вы хотите использовать PHP в комбинации с XML (чтобы беспрепятственно использовать <?xml ?>) лучше отказаться от коротких открывающих тегов.

Полная форма немного длиннее: <?php ... ?>. По другому выглядит полная конструкция вывода на экран. Вместо <?= ... ?> нужно писать <?php echo ... ?>. С учетом этих замен последний пример будет выглядеть так:

Полная (не короткая) форма записи открывающих тегов PHP
    <?php $toggle=1; ?>
    <table>
    <?php foreach ($tab as $dat): ?>
    <tr<?php if ($toggle>0): ?> bgcolor="#dddddd"<?php endif ?>>
        <td><?php echo $dat['edit'] ?></td>
        <td><?php echo $dat[1] ?>     </td>
        <td><?php echo $dat[2] ?>     </td>
    </tr>
    <?php $toggle=-$toggle ?>
    <?php endforeach ?>
    </table>
    

Короткие теги удобно применять на стадии разработки. Готовая же работа должна быть выполнена обязательно с полной формой открывающих тегов. Для переделки коротких тегов в полную форму нет необходимости редактировать отдельно каждый тег - большинство редакторов кода позволяет делать одновременную замену во всех файлах шаблонов (обычно с помощью комбинации клавиш Ctrl+Shift+R). Замены нужно производить в три прохода:

Переход от короткой формы записи открывающих тегов к полной (без использования регулярных выражений)
Найти:Заменить на:
1.<?=<? echo
2.<?<?php
3.<?phpphp<?phpКонтрольный проход, т.к. где-то уже могла применяться полная форма



Примечания

  • Начиная с PHP 5.4, для вывода можно вновь использовать короткий тег <?=, даже при выключенной опции short_open_tag.
  • PHP-код в альтернативном синтаксисе выполняется приблизительно на 30% быстрее, чем тот же код, записанный в основной форме, то есть, с помощью оператора echo.