<?php namespace Venom; use Venom\Database\DatabaseHandler; class Config { private static ?Config $instance = null; private bool $isWriteable = true; private float $version = 1.0; private array $api = []; private array $mail = []; private array $renderer = []; private bool $maintenance = false; private bool $devMode = false; private function __construct() { } public static function getInstance(): Config { if (self::$instance === null) { self::$instance = new Config(); } return self::$instance; } public function setDatabase(array $array): void { if ($this->isWriteable) { DatabaseHandler::get()->init($array); } else { trigger_error('try to write closed config!'); } } public function setAPIAuth(array $array): void { if ($this->isWriteable) { $this->api = $array; } else { trigger_error('try to write closed config!'); } } public function setRender(array $array): void { if ($this->isWriteable) { $this->renderer = $array; } else { trigger_error('try to write closed config!'); } } public function setMaintainMode(bool $mode): void { if ($this->isWriteable) { $this->maintenance = $mode; } else { trigger_error('try to write closed config!'); } } public function getVersion(): float { return $this->version; } public function setVersion(float $param): void { if ($this->isWriteable) { $this->version = $param; } else { trigger_error('try to write closed config!'); } } public function getApi(): array { return $this->api; } public function getMail(): array { return $this->mail; } public function setMail(array $array): void { if ($this->isWriteable) { $this->mail = $array; } else { trigger_error('try to write closed config!'); } } public function getRenderer(): array { return $this->renderer; } public function isMaintenance(): bool { return $this->maintenance; } public function isDevMode(): bool { return $this->devMode; } public function setDevMode(bool $mode): void { if ($this->isWriteable) { $this->devMode = $mode; } else { trigger_error('try to write closed config!'); } } /** * function to close the write mode... this make sure after the config is init no other tool can write to it! */ public function close(): void { $this->isWriteable = false; } }