config = $config; } public static function load(string $moduleBasePath): self { $config = require $moduleBasePath . '/config/module.php'; return new self(is_array($config) ? $config : []); } public function defaultProjectKey(): string { return (string) ($this->config['default_project_key'] ?? 'doge-main'); } public function useProjectDatabase(): bool { return (bool) ($this->config['use_project_database'] ?? true); } public function tablePrefix(): string { return (string) ($this->config['table_prefix'] ?? 'miningcheck_'); } public function uploadsDir(): string { return (string) ($this->config['uploads_dir'] ?? sys_get_temp_dir()); } public function uploadsPublicPrefix(): string { return rtrim((string) ($this->config['uploads_public_prefix'] ?? '/uploads'), '/'); } public function ocr(): array { return (array) ($this->config['ocr'] ?? []); } public function fx(): array { return (array) ($this->config['fx'] ?? []); } public function debug(): array { return (array) ($this->config['debug'] ?? []); } public function debugDir(): string { $debug = $this->debug(); return (string) ($debug['dir'] ?? (dirname($this->uploadsDir()) . '/debug')); } }