metadata = $metadata; $this->fileManager = $fileManager; $this->dataCache = $dataCache; $this->config = $config; $this->useCache = $this->config->get('useCache', false); } protected function getConverter(): Converter { if (!isset($this->converter)) { $this->converter = new Converter($this->metadata, $this->fileManager, $this->config); } return $this->converter; } public function getData(bool $reload = false): array { if (isset($this->data) && !$reload) { return $this->data; } if ($this->useCache && $this->dataCache->has($this->cacheKey) && !$reload) { $this->data = $this->dataCache->get($this->cacheKey); return $this->data; } $this->data = $this->getConverter()->process(); if ($this->useCache) { $this->dataCache->store($this->cacheKey, $this->data); } return $this->data; } public function get($key = null, $default = null) { return Util::getValueByKey($this->getData(), $key, $default); } }