Я обычно использую функции / классы для логики и включает для отображения. Я получаю что-то подобное в контроллере ...
case 'widgetlist':
$widgets = $DAO->getWidgets(); //get some query
include('view/showWidgets.php'); //assume a global $widgets variable
break;
Я обнаружил, что проще дать конструктору HTML / CSS включение, а не вызов функции, который отображается. Недостатком является то, что я полагаюсь на глобальные переменные для передачи переменных в include, а не аргументы, которые намного безопаснее