0

以下代码工作正常:

$memcached = new Memcached();
$memcached->setOption(Memcached::OPT_CLIENT_MODE, Memcached::DYNAMIC_CLIENT_MODE);
$memcached->setOption(Memcached::OPT_DYNAMIC_POLLING_INTERVAL_SECS, 60);    
$memcached->addServer('etc.expalp.cfg.apse1.cache.amazonaws.com', 11211);

$memcached->set('tester', 'set tester...babe!!', 600);
echo $memcached->get('tester');

但是,我想将对象的创建移到一个类中(因为设置了更多设置,我不希望每个页面都包含这些设置)。我尝试了以下方法,但它不起作用:

$elasticache = new elasticache();
$elasticache->memcached->set('tester', 'set tester...babe!!', 600);
echo $elasticache->memcached->get('tester');

然后我有一个名为 elasticache 的类(加载了 spl_autoload_register),如下所示:

class elasticache {

  function __construct() {
    $memcached = new Memcached();   
    $memcached->setOption(Memcached::OPT_CLIENT_MODE, Memcached::DYNAMIC_CLIENT_MODE);
    $memcached->setOption(Memcached::OPT_DYNAMIC_POLLING_INTERVAL_SECS, 60);
    $memcached->addServer('etc.expalp.cfg.apse1.cache.amazonaws.com', 11211);
  }

}

失败了,所以很明显我在这里做错了什么。注意:Memcached() 对象是一个 PHP 动态库 - 请注意,这很重要)。任何人都有任何想法 - 我第一次尝试这个。

4

1 回答 1

2

$memcached 是类方法中的一个局部变量,一旦方法退出就会超出范围;$this->memcached 将是一个类属性,只要该类的对象存在就存在

class elasticache {
  public $memcached;

  function __construct() {
    $this->memcached = new Memcached();   
    $this->memcached->setOption(Memcached::OPT_CLIENT_MODE, Memcached::DYNAMIC_CLIENT_MODE);
    $this->memcached->setOption(Memcached::OPT_DYNAMIC_POLLING_INTERVAL_SECS, 60);
    $this->memcached->addServer('etc.expalp.cfg.apse1.cache.amazonaws.com', 11211);
  }

}
于 2013-01-27T22:13:03.977 回答