<?php
namespace MyApp\Poolcache;

use \
Memcache;
use 
MyApp\MyAppConfiguration as Config;

/**
 * CacheHandler class provides an interface to memcached for Propel instancePool
 * caching in Symfony2
 */
class CacheHandler extends Memcache
{
    static protected 
$_cacheObj null;
    
    static public function 
getInstance()
    {
        if (
self::$_cacheObj == null) {
            
$conf Config::getInstance();
            
self::$_cacheObj = new  self();
            
self::$_cacheObj->connect($conf->getParam('cache.server'),$conf->getParam('cache.port'));
        }
        return 
self::$_cacheObj;
    }
    
    public function 
getPool($key)
    {
        
$ret $this->get($key) ?: null;
        return 
$ret;
    }

    public function 
setPool($key$pool)
    {
        
$conf Config::getInstance();
        if (
false === $this->replace($key$poolMEMCACHE_COMPRESSED$conf->getParam('cache.expire')))
            
$this->set($key$poolMEMCACHE_COMPRESSED$conf->getParam('cache.expire'));
    }
    
    public function 
clearPool($key)
    {
        
$this->delete($key);
    }
}