Смесь php шорттагов - PullRequest
       1

Смесь php шорттагов

2 голосов
/ 15 января 2011

Я занимаюсь проектом codeigniter и замечаю, что оригинальный разработчик использует комбинацию коротких тегов и тегов php в представлениях.Например:

<div id="content">

        <?=show_header()?>

        <ul id="products">
            <?php if (count($products) > 0) : ?>
            <?php foreach($products as $product) : ?>
             ...
</div>

Это плохая практика для наследования?Я думаю, что это уже вызывает у меня проблемы в моей среде разработки.

РЕДАКТИРОВАТЬ: Как насчет <?= => тегов INSIDE <? php ?> тегов в некоторых представлениях?Вот так:

<ul>
<?php foreach ($details as $detail) : ?>
<?php $detail = split(',',$detail); ?>
<?php if ($detail[0] != '') : ?>
    <li>
    <strong><?=ucwords($detail[0])?></strong> : <?=$detail[1]?>
    </li>
<?php endif; ?>
<?php $i++; ?>
<?php endforeach; ?>
</ul>

Это то, что смущает меня прямо сейчас.

Ответы [ 5 ]

7 голосов
/ 15 января 2011

Плохая идея.Не все установки и версии PHP поддерживают этот тип тегов, и это делает код очень трудным для чтения.

Мой совет: всегда используйте полные теги open-close: <?php /*...*/ ?>.

Если бы мне дали ваш сценарий для работы или исправления, я бы остановился на строке 3, проклял и почесал голову, потому что это явно нечитаемо.лучше использовать { вместо :, также для удобства чтения.

3 голосов
/ 15 января 2011

ИМО, да это плохая практика. Короткие теги могут показаться более простыми в использовании, но они не так совместимы, как полные теги. Поэтому вы всегда должны придерживаться полных тегов.

Даже если вам нужно хотя бы использовать короткие теги, не смешивайте их в одном файле.

3 голосов
/ 15 января 2011

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

Если вы не против позволить CI переписать короткие открытые теги в полностью открытые теги, то используйте короткие открытые теги, если они вам нравятся, но только в файлах просмотра:

$config['rewrite_short_tags'] = true;

Но смешивать их в одном и том же файле представления или CI-приложении - это просто неприятно .

1 голос
/ 15 января 2011

Строго говоря, короткий эхо-тег <?= ?> и стандартный тег PHP <?php ?> делают разные вещи (и иногда используются вместе).Использование <?php ?> и его эквивалента короткого тега <? ?> в одном файле является несовместимым, и теперь обе формы коротких тегов не рекомендуется, поскольку они запланированы как устаревшие в PHP6 * 1008.*.

Однако.CodeIgniter обрабатывает теги стиля эха как базовый шаблонизатор (так же, как теги Smarty).Я настоятельно рекомендую использовать теги echo в представлениях CodeIgniter для переменных, поскольку они делают представление более четким в виде HTML / XML / и т. Д.

<p><?= $text ?></p>

В сравнении:

<p><?php echo $text ?></p>

Альтернативаэто подключить библиотеку, подобную Smarty, чтобы ваши представления были как можно ближе к целевому формату файла.Я обнаружил, что уменьшение этого шума важно для отладки и поддержки представлений.

1 голос
/ 15 января 2011

Это плохая практика по двум причинам:

  1. Отсутствие согласованности кода
  2. Он будет работать только на веб-серверах с настройкой php short_open_tag, установленной на true

Для максимальной совместимости и портативности всегда используйте <?php ?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...