Все ваши контроллеры наследуйте от базового контроллера, в котором
protected $title = '';
/**
* @param string $viewName
* @param array $params
* @return string
*/
protected function getViewWithLayout($viewName, array $params = []): string
{
$content = $this->getView($viewName, $params);
return $this->getView('layout', [
'content' => $content,
'title' => $this->title,
]);
}
/**
* @param string $viewName
* @param array $params
* @return string
*/
protected function getView($viewName, array $params = []): string
{
$filePath = sprintf('%s/../view/%s.php', __DIR__, $viewName);
extract($params, EXTR_SKIP);
ob_start();
include $filePath;
return ob_get_clean();
}