Для маленьких битов я просто храню все это в PHP-строках, как при циклическом перемещении массива для генерации списка. Но для больших куч разметки я держу это вне PHP и просто заглядываю в PHP при необходимости.
Это в основном потому, что я предпочитаю оптимизировать для удобства обслуживания. Не только потому, что быстрее увидеть, что происходит, когда в html применена соответствующая подсветка синтаксиса, но и потому, что он также делает ошибки, возникающие из-за некорректного чтения кода, менее вероятными.
Там действительно не самый лучший способ. Я просто стараюсь быть последовательным с тем, что описано выше, и держу глаза открытыми на ситуации, когда, возможно, другой способ был бы лучшим способом справиться с этим.