view = new View(); } /** * Render a view inside a layout. * * @param array $data */ protected function render(string $view, array $data = [], string $layout = 'main'): void { $locale = LocaleController::current(); $i18n = static fn (string $key, array $params = []): string => I18n::t($key, $params, $locale); $globals = [ 'locale' => $locale, 't' => $i18n, 'locale_switcher' => static function (string $currentPath) use ($locale): string { $switcher = new LocaleSwitcher($locale, $currentPath); return $switcher->render(); }, ]; $merged = array_merge($globals, $data); foreach ($merged as $key => $value) { $this->view->assign($key, $value); } $this->view->render($view, $layout); } }