封装PHP内存缓存集和获取功能

时间:2013-02-28 09:31:38

标签: php static singleton memcached

有这个课程:

class Cacher
{
    private static $memcacheObj = NULL;

    public static function GetInstance()
    {
        if (self::$memcacheObj === NULL) 
        {
            self::$memcacheObj = new Memcache;
            self::$memcacheObj->addServer(Configs::memcache_addr);
        }
        return self::$memcacheObj;
    }

    public static function Set($key, $var, $flag = 0, $expire = 0)
    {
        self::GetInstance()->set($key, $var, 0, $expire);
    }

    public static function Get($key, $flag = 0)
    {
        self::GetInstance()->get($key);
    }
}

使用这样的方法,它不起作用,在刷新页面时没有从Cacher :: Get中检索到任何内容:

$keyValue = Cacher::Get('key_name');
if(empty($keyValue))
{
    Cacher::Set('key_name', 'key_value', 0, 0);
}
else
{
    echo "Got value : $keyValue";
}

但是下面的代码可以使用:

$keyValue = Cacher::GetInstance()->get('key_name');
if(empty($keyValue))
{
    Cacher::GetInstance()->set('key_name', 'key_value', 0, 0);
}
else
{
    echo "Got value : $keyValue";
}

有人可以帮我这个吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

您没有在Get中返回结果。应该是:

public static function Get($key, $flag = 0)
{
    return self::GetInstance()->get($key);
}