create cache for BaseLoop::count method

This commit is contained in:
Manuel Raynaud
2014-01-24 14:22:06 +01:00
parent 5b9b03970e
commit 54b95fccd5

View File

@@ -67,7 +67,8 @@ abstract class BaseLoop
protected $timestampable = false; protected $timestampable = false;
protected $versionable = false; protected $versionable = false;
private static $cache = array(); private static $cacheLoopResult = array();
private static $cacheCount = array();
/** /**
* Create a new Loop * Create a new Loop
@@ -336,6 +337,9 @@ abstract class BaseLoop
} }
public function count() public function count()
{
$hash = $this->args->getHash();
if(false === array_key_exists($hash, self::$cacheCount))
{ {
$count = 0; $count = 0;
if ($this instanceof PropelSearchLoopInterface) { if ($this instanceof PropelSearchLoopInterface) {
@@ -353,8 +357,10 @@ abstract class BaseLoop
$count = count($searchArray); $count = count($searchArray);
} }
} }
self::$cacheCount[$hash] = $count;
}
return $count; return self::$cacheCount[$hash];
} }
/** /**
@@ -364,7 +370,7 @@ abstract class BaseLoop
public function exec(&$pagination) public function exec(&$pagination)
{ {
$hash = $this->args->getHash(); $hash = $this->args->getHash();
if(false === array_key_exists($hash, self::$cache)) if(false === array_key_exists($hash, self::$cacheLoopResult))
{ {
if ($this instanceof PropelSearchLoopInterface) { if ($this instanceof PropelSearchLoopInterface) {
$searchModelCriteria = $this->buildModelCriteria(); $searchModelCriteria = $this->buildModelCriteria();
@@ -400,10 +406,10 @@ abstract class BaseLoop
$loopResult->setVersioned(); $loopResult->setVersioned();
} }
self::$cache[$hash] = $this->parseResults($loopResult); self::$cacheLoopResult[$hash] = $this->parseResults($loopResult);
} }
return self::$cache[$hash]; return self::$cacheLoopResult[$hash];
} }