dbDriver = $dbDriver; $this->cacheEngine = $cacheEngine; $this->timeToCache = $timeToCache; } /** * @param string $sql * @param null $params * @return GenericIterator * @throws InvalidArgumentException * @throws \ByJG\Serializer\Exception\InvalidArgumentException */ public function getIterator($sql, $params = null) { // Otherwise try to get from cache $key = $this->getQueryKey($sql, $params); // Get the CACHE $cacheItem = $this->cacheEngine->getItem($key); if (!$cacheItem->isHit()) { $iterator = $this->dbDriver->getIterator($sql, $params); $cacheItem->set($iterator->toArray()); $cacheItem->expiresAfter(DateInterval::createFromDateString($this->timeToCache . " seconds")); $this->cacheEngine->save($cacheItem); } $arrayDS = new ArrayDataset($cacheItem->get()); return $arrayDS->getIterator(); } protected function array_map_assoc($callback, $array) { $r = array(); foreach ($array as $key=>$value) { $r[$key] = $callback($key, $value); } return $r; } protected function getQueryKey($sql, $array) { $key1 = md5($sql); $key2 = ""; // Check which parameter exists in the SQL if (is_array($array)) { $key2 = md5(":" . implode(',', $this->array_map_assoc(function($k,$v){return "$k:$v";},$array))); } return "qry:" . $key1 . $key2; } public function getScalar($sql, $array = null) { $this->dbDriver->getScalar($sql, $array); } public function getAllFields($tablename) { $this->dbDriver->getAllFields($tablename); } public function execute($sql, $array = null) { $this->dbDriver->execute($sql, $array); } public function beginTransaction() { $this->dbDriver->beginTransaction(); } public function commitTransaction() { $this->dbDriver->commitTransaction(); } public function rollbackTransaction() { $this->dbDriver->rollbackTransaction(); } public function getDbConnection() { return $this->dbDriver->getDbConnection(); } public function setAttribute($name, $value) { $this->dbDriver->setAttribute($name, $value); } public function getAttribute($name) { $this->dbDriver->getAttribute($name); } public function executeAndGetId($sql, $array = null) { $this->dbDriver->executeAndGetId($sql, $array); } public function getDbHelper() { return $this->dbDriver->getDbHelper(); } /** * @return Uri */ public function getUri() { return $this->dbDriver->getUri(); } public function isSupportMultRowset() { return $this->dbDriver->isSupportMultRowset(); } public function setSupportMultRowset($multipleRowSet) { $this->dbDriver->setSupportMultRowset($multipleRowSet); } } __halt_compiler();----SIGNATURE:----gi11q+NbPIVJ8qXgwMBd+3lwh8tACgg6DBcV8FS/Fg8/cNt0PtZeWTohT4f6Lrc9XiJ2Vspso/9jwrLCV/za7HlLZFW1+UdjuARHPaFCmIS8ufg/x1tC+i5F8k3b1h2xzyHOOXApa4q1tJu9DQ5djUKRH2dtBOz24fyxtsUVECxke5DVui+642LG7SCTmwKmEjDCS3+bRrUjLFg0PLte+9+G8jfWAh0sID5KOFcKUG19bSi3rR0enTCjz+d7CuMc9rcGZlMSFfMudRkLe+LJuCNrJIYbEcA8QquN98ABQFvafHjV/XwHW/nz5zxJU3Q4gHPDNZUB0CRZSEpIZUy13rXZnRY0dll9kXGJVX7/OrQgrfBzI+Lj57Tj/fuzPiet/0+ANIBQpW788+AlHXMfkCjho8FPjIctE4hjerJQh9KoXAk/oUdtS/QGKzGVeHpAh1Hg8lxyRHIJ81U0wcitLk6R75xaRfcFhYvEvHxxWCZLjjRvJMRBxpnSsSVBEdKijLVca5uruvKo+bPSo/fnORo+4qBVjiPANkTCs5aWovolnHBp7RnjgyUg+XQ57oL1Ge4QXgdL7mFc6ommz8HAtzpRX57mDuVKreNH8Kd7hPqGvrZ3Y2V9mGSrXI+n7jqDX/hkpMcZL5WNWRpEBaY/Mz1hIA3QjsJszpjdDojo1ww=----ATTACHMENT:----OTMyOTUxNTUwODAxMzExMiA2NjA1NDE3NjgyMTk3NzIwIDE5MTcyNzAzMDQ4MjY0MzQ=