изначально php это язык шаблонов
шаблон это буквально то, как документ (или его часть) должна выглядеть в общем (например все что касается верстки), но в тех местах где есть различия (например текст) вставляются в особом формате пометки.
php файл это, сюрприз, фактически html (точнее ему пофиг) файл, в котором вставлены вставки с кодом <?php ... ?>, при этом эти вставки могут семантически делить шаблон на блоки, и использовать их как просто вызов echo текст шаблона, в результате можно использовать условные блоки, циклы, и функции:
<html>
<body>
<?php function test($p) { ?>
Привет <?=$p; ?>
<?php } ?>
циклы:
<ol>
<?php for($i=3;$i>0;$i--) { ?>
<li value="<?=$i; ?>">ha ha ha</li>
<?php } ?>
</ol>
Вызовы:
<?php test('blablabla'); ?>
<?php test('123123123'); ?>
</body>
</html>
Если честно, мне не понятно, почему разработчики шаблонов продолжают пилить свои новые на базе php, чего им не хватает? Создают монструозные конструкции со своими форматами шаблонов, все это тормозит, вносит свои глюки и требует поддержки.
На практике, генерация именно html на серверной стороне, идеологически устарела. Да, если надо сформировать документ (например docx или лучше open document .odt) то шаблоны идеальны, но для web лучше формировать итоговую страничку на клиентской стороне, используя шаблоны уже на javascript