Фэншуй смешивания 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, каким образом вы это делаете? Уверен, среди тех, кто заглянет в этот вопрос, найдутся матёрые разработчики с множеством больших проектов на счету. Интересует ваше мнение об этом)
Если тут уже были обсуждения этого вопроса, прошу прощения за дубль: в процессе поиска и в блоке похожих вопросов ни на что похожее не натыкался)