Смотри, суть в том, чтобы сделать как у Yii2/Laravel, нужно знать для чего в пыхе двойной знак доллара.
<?php
abstract class Controller {
function render(string $file, array $vars = []) {
foreach ($vars as $key => $value)
$$key = $value;
ob_start();
include $file;
return ob_get_clean();
}
}
class MainController extends Controller {
function index() {
return $this->render('hello.php', [
'title' => 'Hello',
'message' => 'Hello world!'
]);
}
}
И в hello.php
<h1><?= $title ?></h1>
<p><?= $message ?></p>