Фэншуй смешивания HTML/PHP кода

Порой появляется необходимость смешивать HTML/PHP код. Хорошо, когда необходимо вывести одну строку с разными переменными, через тот же sprintf или (имхо) хромым вариантом: echo '<div class="'.$varclass.'" id="'.$varid.'">'.$content.'</div>';.

Но что делать в случае, если необходимо совместить, например, if или switch-case, и несколько разных, больших блоков HTML (возможно тоже вперемешку с PHP)?

К примеру:

switch ($pagename) {
    case 'index':
        // Большой блок HTML
        break;
    case 'contact':
        // Другой блок HTML, ещё больше первого
        break;
    case 'news':
        // Ещё один блок HTML
        break;
    default:
        // 404
}

На ум приходят конструкции вроде (не бейте)) ):

case 'index':
    ?>
        <div>...</div>
    <?php
    break;
case...

Или:

case 'index':
    echo '<div class="someclass">
              <div class="anotherclass">
                   <img ...>
              </div>
              <span class="caption">'.$var.'</span>
          </div>';
    break;

Эти примеры ломаются (а точнее превращают код в нечитаемое месиво), если доходит, например, до вложенных условий (тут ещё хоть как-то понятно, а вот если вложенность больше и она прыгает, то вообще жесть):

<?php
...
if ($errored) {
    ?>
    <div class="errored">
    <?php
    if ($errortype == "info") {
        ?>
            <img src="info.png">
        <?php
    } elseif ($errortype == "danger") {
        ?>
            <img src="danger.png">
        <?php
    } elseif ($errortype == "warning") {
        if ($errorcode == 0) {
            ?>
                <img src="error0.png">
            <?php
        } else {
            ?>
                <img src="warning.png">
            <?php
        } else {
            ?>
                <img src="othererror.png">
            <?php
        }
    echo "Error #".$errorcode.": ".$errordescription;
}
} else {
    ?>
    <div class="success">OK!</div>
    <?php
}
?>
?>

Для совсем огромных кусков кода можно использовать include/require, но, вероятно, это не лучший вариант, если проект небольшой, а таких кусков много. Да и в моём понимании, include/require всё-таки должен использоваться для подключения обширных модулей, а не фарша из кода.

Понимаю, что вопрос - на уровне начала познания веб-дэва, но я как-то упустил его из виду при обучении. Да и, как правило, на ресурсах по обучению HTML/PHP приводятся лишь отрывки кода в виде: "PHP-код + HTML с вкраплениями echo". На разборы обширных проектов с сложной логикой я как-то не натыкался.

Поискав на Stackoverflow информацию по этому вопросу, нашёл много тем наподобие: "а можно ли сделать вот так?", "а если сделаю вот так - оно не сломается?" с примерами, подобными тем, что описал выше. Как правило, ответы: "приемлемо", "да, оно будет так работать" и подобные. Но тут больше вопрос про эдакий "фэншуй" кода, чтобы разработчик, который будет смотреть этот код после меня, не сломал себе глаза и мозг)

Потому стало интересно: если появляется необходимость смешивания HTML+PHP, каким образом вы это делаете? Уверен, среди тех, кто заглянет в этот вопрос, найдутся матёрые разработчики с множеством больших проектов на счету. Интересует ваше мнение об этом)

Если тут уже были обсуждения этого вопроса, прошу прощения за дубль: в процессе поиска и в блоке похожих вопросов ни на что похожее не натыкался)


Ответы (0 шт):