【问题标题】:Encapsulate PHP memcache set and get function封装PHP memcache set和get函数
【发布时间】:2013-02-28 09:31:38
【问题描述】:

有这个课程:

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";
}

有人可以帮我解决这个问题吗?非常感谢!

【问题讨论】:

    标签: php static singleton memcached


    【解决方案1】:

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

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

    【讨论】:

    • 我们都有想念简单事物的日子,上帝保佑 SO :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2021-02-27
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多