2012-06-25 35 views
0

我正在研究一個PHP類,它用作通過PECL擴展提供的Memcached類的包裝。我在處理調用get方法的方法時遇到問題。 get方法中的第三個參數默認爲null,並通過引用傳遞變量。我無法用我的包裝鏡像Memcached get方法的功能。確定函數內NULL默認值和NULL參數之間的差異

通過直接使用Memcached的類,會發生以下情況:

$m = new Memcached(); 
$m->addServer('127.0.0.1', 11211); 

$m->add('my-key', 'my-value'); 

$m->get('my-key', null, $cas_token); 

var_dump($cas_token); // (float) 3212 

這裏的關鍵是,我可以通過一個未初始化,空VAR的get函數,它的工作原理是中科院令牌設置到VAR ,然後可以訪問它。

在我的課上,我想提供使用此CAS令牌和我的包裝方法的能力;然而,我想要根據方法是否被第三個變量調用來做不同的事情。我無法找到一種方法來區分當我使用包裝器方法時是否顯式調用了第三個變量。什麼我試圖的框架如下:

class MyMemcached { 

    ... 

    public function get($key, $cache_cb = NULL, &$cas_token = NULL) { 
     if (is_callable($cache_cb) || ! is_null($cas_token)) { 
      $this->m->get($key, $cache_cb, $cas_token); 
     } else { 
      // Do something differently 
     } 
    } 
} 

$myMemcached = new Memcached(); 
$myMemcached->addServer('127.0.0.1', 11211); 

$myMemcached->add('my-key', 'my-value'); 

$myMemcached->get('my-key', null, $cas_token); 

var_dump($cas_token); // NULL 

再次,在MyMemcached ::得到,我不能,如果用戶與NULL VAR或不要求它加以區分。你知道我能區分這兩個事件嗎?

謝謝!

回答