rework structure

added Router
added .htaccess
removed API-Module => is not used
renamed batch to CRON
This commit is contained in:
Maurice Grönwoldt 2020-09-10 22:47:58 +02:00
commit c33bb4cb3a
37 changed files with 680 additions and 190 deletions

View file

@ -4,6 +4,14 @@
namespace Venom;
use Venom\Core\ArgumentHandler;
use Venom\Core\Config;
use Venom\Core\Module;
use Venom\Core\Registry;
use Venom\Exceptions\ExceptionHandler;
use Venom\Helper\ErrorHandler;
use Venom\Helper\URLHelper;
use Venom\Routing\Router;
use Venom\Views\Asset;
use Venom\Views\RenderController;
use Venom\Views\VenomRenderer;
@ -13,9 +21,11 @@ class Venom
private VenomRenderer $renderer;
private array $controllers = [];
private array $modules = [];
private array $routers = [];
public function __construct()
{
ExceptionHandler::setExceptionHandler();
$this->renderer = new VenomRenderer($this);
Asset::get()->setRenderer($this->renderer);
}
@ -24,17 +34,40 @@ class Venom
{
// we need to load the current controller and the current start template.
// after this we can start the renderer
if (Config::getInstance()->isRouterEnabled()) {
$status = $this->useRouter();
if ($status['found']) {
if ($status['status']) {
exit(0);
}
ErrorHandler::setFatalError();
}
}
$registry = Registry::getInstance();
$registry->getSeo()->loadSite();
$registry->getLang()->initLang();
$registry->getSeo()->loadSite();
$this->renderer->init($this->findController());
$this->renderer->render();
}
private function useRouter(): array
{
$url = URLHelper::getInstance()->getUrl();
/** @var Router $router */
foreach ($this->routers as $router) {
$route = $router->findRoute($url, $_SERVER['REQUEST_METHOD']);
$status = $router->tryFunctionCall($route);
if ($route !== null) {
return ['found' => true, 'status' => $status];
}
}
return ['found' => false, 'status' => true];
}
private function findController(): ?RenderController
{
$cl = ArgumentHandler::get()->getItem('cl');
if ($cl != null && isset($this->controllers[$cl])) {
if ($cl !== null && isset($this->controllers[$cl])) {
return $this->controllers[$cl];
}
return null;
@ -60,8 +93,8 @@ class Venom
}
}
private function prepare()
public function addRouter(string $name, Router $router): void
{
$this->routers[$name] = $router;
}
}