Смотря о чем именно речь. Мешать верстку и логику - всё-таки плохо, и есть много на то причин.
С другой стороны всякие шаблонизаторы со специфичной разметкой на мой взгляд очень неудобны.
Сам пользуюсь вот таким методом:
function template() {
if (!is_null($this->template) && is_file("template/{$this->template}.tpl.php")) {
extract($this->data, EXTR_SKIP);
ob_start();
require "template/{$this->template}.tpl.php";
$content = ob_get_clean();
return $content;
} else {
throw new Exception('Не указан шаблон: '.$this->template);
}
}
По-моему, наиболее простой и удобный вариант.