public function getData() { if (!$this->_options->isCacheEnabled() || !$this->_dataSource instanceof Cachable) { return $this->_dataSource->getData(); } $cacheDir = $this->_options->getCacheDir(); $cacheKey = $this->_dataSource->getCacheKey(); $cacheFile = $cacheDir . '/' . $cacheKey . '.sengincache'; if (is_file($cacheFile)) { $expirationTime = $this->_options->getExpirationTime(); $lastModificationTime = time() - filemtime($cacheFile); if ($lastModificationTime <= $expirationTime) { // from cache return file_get_contents($cacheFile); } // cache expired, remove cache data unlink($cacheFile); } $data = $this->_dataSource->getData(); // save cache data file_put_contents($cacheFile, $data); return $data; }