venom/src/Venom/Venom.php

67 lines
1.7 KiB
PHP

<?php
namespace Venom;
use Venom\Views\Asset;
use Venom\Views\RenderController;
use Venom\Views\VenomRenderer;
class Venom
{
private VenomRenderer $renderer;
private array $controllers = [];
private array $modules = [];
public function __construct()
{
$this->renderer = new VenomRenderer($this);
Asset::get()->setRenderer($this->renderer);
}
public function run(): void
{
// we need to load the current controller and the current start template.
// after this we can start the renderer
$registry = Registry::getInstance();
$registry->getSeo()->loadSite();
$registry->getLang()->initLang();
$this->renderer->init($this->findController());
$this->renderer->render();
}
private function findController(): ?RenderController
{
$cl = ArgumentHandler::get()->getItem('cl');
if ($cl != null && isset($this->controllers[$cl])) {
return $this->controllers[$cl];
}
return null;
}
public function initModules(array $modules): void
{
foreach ($modules as $key => $moduleClass) {
$module = new $moduleClass;
if ($module instanceof Module && $module->register()) {
$this->modules[$key] = $module;
}
}
}
public function initControllers(array $controllers): void
{
foreach ($controllers as $key => $controllerClass) {
$controller = new $controllerClass;
if ($controller instanceof RenderController && $controller->register()) {
$this->controllers[$key] = $controller;
}
}
}
private function prepare()
{
}
}