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 に答える