2013-04-30 21 views
2

我使用从数据库生成对象的对象的唯一ID如下:生成是不会变的跨实例

$game = $this->game_model->get_by('slug', 'some-title'); 

我也用笨缓存图书馆,让我写一个缓存文件通过:

$this->cache->write($game, $cache); 

其中$ game是对象和$ cache是​​该对象的标识符。

我想为此对象生成一个唯一的ID用作缓存名称。类似spl_object_hash但在后续实例中保持不变。

例如,如果我这样做:

$cache = spl_object_hash($game); 

// Cache object 
$this->cache->write($game, $cache); 

它会产生000000006c5ce27300000000564a8706.cache作为唯一的ID,但如果我重新载入页面,我得到一个不同的ID,这违背了缓存的目的。

如何获得对象的一致唯一ID?

+0

该对象是否有任何已经是其记录的一部分的唯一标识符? – vcardillo 2013-04-30 19:34:03

回答

5

你可以使用serialize()然后散列它。

$cache = hash('sha1', serialize($game)); 
+0

完美!谢谢 – Motive 2013-04-30 22:05:58