Как лучше генерировать и выводить контент страницы?

Скачивая разные исходники для изучения, видел разные варианты вывода контента, какой из них лучше использовать?

Вариант 1:
<table><tr><td>ид</td><td>имя</td></tr>
<? foreach($data as $user) { ?>
   <tr><td><? echo $user[id]; ?></td><td><? echo $user[name]; ?></td></tr>
<? } ?>
</table>


Вариант 2:
<? 
echo '<table><tr><td>ид</td><td>имя</td></tr>';
foreach($data as $user) {
   echo '<tr><td>' . $user[id] . '</td><td>' . $user[name] . '</td></tr>';
}
echo '</table>';
?>


Вариант 3:
<?
$content = '<table><tr><td>ид</td><td>имя</td></tr>';
foreach($data as $user) {
   $content .= '<tr><td>' . $user[id] . '</td><td>' . $user[name] . '</td></tr>';
}
$content .= '</table>';
echo $content;
?>
  • Вопрос задан
  • 2652 просмотра
Решения вопроса 2
Желательно использовать минимум операций вывода (echo). Первый вариант плохочитаемый (мое личное мнение). Поэтому 3 вариант (точно не второй).
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Варианты 1 и 2 на мой взгляд равнозначны, хотя в редакторах с подсветкой синтаксиса вариант 1 будет выглядеть лучше. На мой взгляд код на php - программа, а не html с активными вставками, да и выглядит куча вставок <?= ?> не очень красиво. Поэтому я предпочитаю вариант 2, только записывая немного по другому.
<?php
echo '<table><tr><td>ид</td><td>имя</td></tr>';
foreach($data as $user)
   echo "<tr><td>{$user['id']}</td><td>{$user['name'] }</td></tr>";
echo '</table>';
?>

Вариант 3 стоит использовать если заранее сложно определить, надо ли выводить блок, например
<?php
$content = '';
foreach($data as $user)
    if ($user[name] == 'Вася')
        $content .= "<tr><td>{$user['id']}</td><td>{$user['name']}</td></tr>";
if ($content !== '')
    echo "<table><tr><td>ид</td><td>имя</td></tr>{$content}</table>";
?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@kaasius
Никакой - используйте шаблонизатор.
Ответ написан
Комментировать
Первый. Иначе твой код превратиться в огромную кучу ECHO.
И не используй эту конструкцию <?= $user[id]; ?>, только <?php echo $user[id]; ?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы